p_table <- function(tab_data, ...) {
  tab_data_2 <- deparse(substitute(tab_data))
  
  table_p <- do.call(CreateTableOne, 
                     list(data = as.name(tab_data_2), includeNA = TRUE, ...))
  table_p_out <- print(table_p,
                       showAllLevels = TRUE,
                       printToggle = FALSE)
  kable(table_p_out,
        align = "c")
}
uni_var <- function(test_var, data_imp) {
                
        cat("_________________________________________________")
        cat("\n")
        cat("   \n##", test_var)
        cat("\n")
        cat("_________________________________________________")
        cat("\n")
        
        f <- as.formula(paste("Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)",
                              as.name(test_var),
                              sep = " ~ " ))
        
        data_imp_2 <- deparse(substitute(data_imp))
        km_fit <- do.call("survfit", list(formula = f, data = as.name(data_imp_2)))
        print(km_fit)
        cat("\n")
        print(summary(km_fit, times = c(12, 24, 36, 48, 60, 120)))
        cat("\n")
        cat("\n")
        cat("\n")
        cat("   \n## Univariable Cox Proportional Hazard Model for: ", test_var)
        cat("\n")
        cat("\n")
        n_levels <- nlevels(data_imp[[test_var]])
        if(n_levels == 1){
                print("Only one level, no Cox model performed")
                cat("\n")
        } else {
                cox_fit <- do.call("coxph", list(formula = f, data = as.name(data_imp_2)))
                print(summary(cox_fit))
                cat("\n")
                
                do.call("ggforest",
                         list(model = cox_fit, data = as.name(data_imp_2)))
        }
        cat("\n")
        cat("\n")
        cat("\n")
        cat("   \n## Unadjusted Kaplan Meier Overall Survival Curve for: ", test_var)
        p <- do.call("ggsurvplot",
                     list(fit = km_fit, data = as.name(data_imp_2),
                          palette = "jco", censor = FALSE, legend = "right",
                          linetype = "strata", xlab = "Time (Months)"))
        print(p)
}
col.width <- c(37, 10, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 1, 4, 1, 1,
               1, 3, 2, 2, 8, 2, 5, 5, 5, 4, 5, 5, 5,4, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3,
               3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 8,
               8, 8, 2, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 2, 2, 5, 2, 5, 3, 1, 3, 1, 8, 8, 2, 8,
               2, 8, 2, 2, 1, 8, 1, 1, 1, 1, 1, 8, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1,
               1, 1, 1, 1, 1, 1, 1)
col.names.abr <- c("PUF_CASE_ID", "PUF_FACILITY_ID", "FACILITY_TYPE_CD", "FACILITY_LOCATION_CD",
                   "AGE", "SEX", "RACE", "SPANISH_HISPANIC_ORIGIN", "INSURANCE_STATUS",
                   "MED_INC_QUAR_00", "NO_HSD_QUAR_00", "UR_CD_03", "MED_INC_QUAR_12", "NO_HSD_QUAR_12",
                   "UR_CD_13", "CROWFLY", "CDCC_TOTAL_BEST", "SEQUENCE_NUMBER", "CLASS_OF_CASE",
                   "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "LATERALITY", "HISTOLOGY", "BEHAVIOR", "GRADE",
                   "DIAGNOSTIC_CONFIRMATION", "TUMOR_SIZE", "REGIONAL_NODES_POSITIVE",
                   "REGIONAL_NODES_EXAMINED", "DX_STAGING_PROC_DAYS", "RX_SUMM_DXSTG_PROC", "TNM_CLIN_T",
                   "TNM_CLIN_N", "TNM_CLIN_M", "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
                   "TNM_PATH_STAGE_GROUP", "TNM_EDITION_NUMBER", "ANALYTIC_STAGE_GROUP", "CS_METS_AT_DX",
                   "CS_METS_EVAL", "CS_EXTENSION", "CS_TUMOR_SIZEEXT_EVAL", "CS_METS_DX_BONE", "CS_METS_DX_BRAIN",
                   "CS_METS_DX_LIVER", "CS_METS_DX_LUNG", "LYMPH_VASCULAR_INVASION", "CS_SITESPECIFIC_FACTOR_1",
                   "CS_SITESPECIFIC_FACTOR_2", "CS_SITESPECIFIC_FACTOR_3", "CS_SITESPECIFIC_FACTOR_4",
                   "CS_SITESPECIFIC_FACTOR_5", "CS_SITESPECIFIC_FACTOR_6", "CS_SITESPECIFIC_FACTOR_7",
                   "CS_SITESPECIFIC_FACTOR_8", "CS_SITESPECIFIC_FACTOR_9", "CS_SITESPECIFIC_FACTOR_10",
                   "CS_SITESPECIFIC_FACTOR_11", "CS_SITESPECIFIC_FACTOR_12", "CS_SITESPECIFIC_FACTOR_13",
                   "CS_SITESPECIFIC_FACTOR_14", "CS_SITESPECIFIC_FACTOR_15", "CS_SITESPECIFIC_FACTOR_16",
                   "CS_SITESPECIFIC_FACTOR_17", "CS_SITESPECIFIC_FACTOR_18", "CS_SITESPECIFIC_FACTOR_19",
                   "CS_SITESPECIFIC_FACTOR_20", "CS_SITESPECIFIC_FACTOR_21", "CS_SITESPECIFIC_FACTOR_22",
                   "CS_SITESPECIFIC_FACTOR_23", "CS_SITESPECIFIC_FACTOR_24", "CS_SITESPECIFIC_FACTOR_25",
                   "CS_VERSION_LATEST", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS", "DX_DEFSURG_STARTED_DAYS",
                   "RX_SUMM_SURG_PRIM_SITE", "RX_HOSP_SURG_APPR_2010", "RX_SUMM_SURGICAL_MARGINS",
                   "RX_SUMM_SCOPE_REG_LN_SUR", "RX_SUMM_SURG_OTH_REGDIS", "SURG_DISCHARGE_DAYS", "READM_HOSP_30_DAYS",
                   "REASON_FOR_NO_SURGERY", "DX_RAD_STARTED_DAYS", "RX_SUMM_RADIATION", "RAD_LOCATION_OF_RX",
                   "RAD_TREAT_VOL", "RAD_REGIONAL_RX_MODALITY", "RAD_REGIONAL_DOSE_CGY", "RAD_BOOST_RX_MODALITY",
                   "RAD_BOOST_DOSE_CGY", "RAD_NUM_TREAT_VOL", "RX_SUMM_SURGRAD_SEQ", "RAD_ELAPSED_RX_DAYS",
                   "REASON_FOR_NO_RADIATION", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", "RX_SUMM_CHEMO",
                   "DX_HORMONE_STARTED_DAYS", "RX_SUMM_HORMONE", "DX_IMMUNO_STARTED_DAYS", "RX_SUMM_IMMUNOTHERAPY",
                   "RX_SUMM_TRNSPLNT_ENDO", "RX_SUMM_SYSTEMIC_SUR_SEQ", "DX_OTHER_STARTED_DAYS", "RX_SUMM_OTHER",
                   "PALLIATIVE_CARE", "RX_SUMM_TREATMENT_STATUS", "PUF_30_DAY_MORT_CD", "PUF_90_DAY_MORT_CD",
                   "DX_LASTCONTACT_DEATH_MONTHS", "PUF_VITAL_STATUS", "RX_HOSP_SURG_PRIM_SITE", "RX_HOSP_CHEMO",
                   "RX_HOSP_IMMUNOTHERAPY", "RX_HOSP_HORMONE", "RX_HOSP_OTHER", "PUF_MULT_SOURCE", "REFERENCE_DATE_FLAG",
                   "RX_SUMM_SCOPE_REG_LN_2012", "RX_HOSP_DXSTG_PROC", "PALLIATIVE_CARE_HOSP", "TUMOR_SIZE_SUMMARY",
                   "METS_AT_DX_OTHER", "METS_AT_DX_DISTANT_LN", "METS_AT_DX_BONE", "METS_AT_DX_BRAIN",
                   "METS_AT_DX_LIVER", "METS_AT_DX_LUNG", "NO_HSD_QUAR_16", "MED_INC_QUAR_16", "MEDICAID_EXPN_CODE")
#Read in data for each subsite
lip <- read_fwf('NCDBPUF_Lip.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
melanoma <- read_fwf('NCDBPUF_Melanoma.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
                       
skin <- read_fwf('NCDBPUF_OtSkin.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
hodgextr <- read_fwf('NCDBPUF_HodgExtr.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
hodgndal <- read_fwf('NCDBPUF_HodgNdal.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
NHLndal <- read_fwf('NCDBPUF_NHLNdal.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
NHLextr <- read_fwf('NCDBPUF_NHLExtr.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
breast <-  read_fwf('NCDBPUF_Breast.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
vulva <-  read_fwf('NCDBPUF_Vulva.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
vagina <-  read_fwf('NCDBPUF_Vagina.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
penis <-  read_fwf('NCDBPUF_Penis.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
otleuk <- read_fwf('NCDBPUF_OtLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
  
otheracuteleuk  <- read_fwf('NCDBPUF_OtAcLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
  
ALL  <- read_fwf('NCDBPUF_ALymLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
#Combine data for all subsites
dat <- bind_rows(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, 
                 vulva, vagina, penis, NHLextr, otleuk, otheracuteleuk, ALL)
rm(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, vulva, vagina, 
   penis, NHLextr, otleuk, otheracuteleuk, ALL)
prim_site_text <- data_frame(PRIMARY_SITE = c(
#NHL sites
"C000", 
"C001", 
"C002", 
"C003", 
"C004", 
"C005", 
"C006", 
"C008",
"C009", 
"C019", 
"C020", 
"C021",
"C022", 
"C023", 
"C024", 
"C028", 
"C029",
"C030",
"C031",
"C039", 
"C040", 
"C041", 
"C048",
"C049", 
"C050", 
"C051", 
"C052", 
"C058", 
"C059",
"C060", 
"C061", 
"C062", 
"C068", 
"C069", 
"C079",  
"C098",
"C099",
"C111",
"C142",
"C300",
"C379",
"C420",
"C422",
"C424",
#skin/melanoma
                                 "C440", "C441", "C442", "C443", "C444", "C445",
                                 "C446", "C447", "C448", "C449",
                                 
                                 #breast - nipple
                                 "C500",
                                 
                                 #vagina/vulva
                                 "C510", "C511", "C512", "C518", "C519", "C529",
                                 
                                 #penis
                                 "C600", "C601", "C602", "C608", "C609", "C639",
"C770",
"C771",
"C772",
"C773",
"C774",
"C775",
"C778",
"C779"),
SITE_TEXT = c(
"C00.0 External Lip: Upper NOS",
"C00.1 External Lip: Lower NOS",
"C00.2 External Lip: NOS",
"C00.3 Lip: Upper Mucosa",
"C00.4 Lip: Lower Mucosa",
"C00.5 Lip: Mucosa NOS",
"C00.6 Lip: Commissure",
"C00.8 Lip: Overlapping",
"C00.9 Lip NOS",
"C01.9 Tongue: Base NOS",
"C02.0 Tongue: Dorsal NOS",
"C02.1 Tongue: Border, Tip",
"C02.2 Tongue: Ventral NOS",
"C02.3 Tongue: Anterior NOS",
"C02.4 Lingual Tonsil",
"C02.8 Tongue: Overlapping",
"C02.9 Tongue: NOS",
"C03.0 Gum: Upper",
"C03.1 Gum: Lower",
"C03.9 Gum NOS",
"C04.0 Mouth: Anterior Floor",
"C04.1 Mouth: Lateral Floor",
"C04.8 Mouth: Overlapping Floor",
"C04.9 Floor of Mouth NOS",
"C05.0 Hard Palate",
"C05.1 Soft Palate NOS",
"C05.2 Uvula",
"C05.8 Palate: Overlapping",
"C05.9 Palate NOS",
"C06.0 Cheek Mucosa",
"C06.1 Mouth: Vestibule",
"C06.2 Retromolar Area",
"C06.8 Mouth: Other Overlapping",
"C06.9 Mouth NOS",
"C07.9 Parotid Gland",
  "C09.8 Tonsil: Overlapping",
  "C09.9 Tonsil NOS",
  "C11.1 Nasopharynx: Poster Wall", 
  "C14.2 Waldeyer Ring",
  "C30.0 Nasal Cavity",
  "C37.9 Thymus",
"C42.0 Blood",
  "C42.2 Spleen",
"C42.4 Hematopoietic NOS",
 #skin
"C44.0 Skin of lip, NOS",
"C44.1 Eyelid",
"C44.2 External ear",
"C44.3 Skin of ear and unspecified parts of face",
"C44.4 Skin of scalp and neck",
"C44.5 Skin of trunk",
"C44.6 Skin of upper limb and shoulder",
"C44.7 Skin of lower limb and hip",
"C44.8 Overlapping lesion of skin",
"C44.9 Skin, NOS", 
#breast
"C50.0 Nipple",
#vulva/vagina
"C51.0 Labium majus",
"C51.1 Labium minus",
"C51.2 Clitoris",
"C51.8 Overlapping lesion of vulva",
"C51.9 Vulva, NOS",
"C52.9 Vagina, NOS",
#penis
"C60.0 Prepuce",
"C60.1 Glans penis",
"C60.2 Body of penis",
"C60.8 Overlapping lesion of penis",
"C60.9 Penis",
"C63.2 Scrotum, NOS",
  "C77.0 Lymph Nodes: HeadFaceNeck",
  "C77.1 Intrathoracic Lymph Nodes",
  "C77.2 Intra-abdominal LymphNodes",
  "C77.3 Lymph Nodes of axilla or arm ",
  "C77.4 Lymph Nodes: Leg",
  "C77.5 Pelvic Lymph Nodes",
  "C77.8 Lymph Nodes: multiple region",
  "C77.9 Lymph Node NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE) 
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
              "DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS",  "RAD_REGIONAL_DOSE_CGY",
              "RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", 
              "DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
              "RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
        mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
                                            "Community Cancer Program" = "1",
                                            "Comprehensive Comm Ca Program" = "2",
                                            "Academic/Research Program" = "3",
                                            "Integrated Network Ca Program" = "4",
                                            "Other" = "9")) %>%
        mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
                                            "New England" = "1",
                                            "Middle Atlantic" = "2",
                                            "South Atlantic" = "3",
                                            "East North Central" = "4",
                                            "East South Central" = "5",
                                            "West North Central" = "6",
                                            "West South Central" = "7",
                                            "Mountain" = "8",
                                            "Pacific" = "9",
                                            "out of US" = "0")) %>%
        mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
                                                 "Northeast" = c("1", "2"),
                                                 "South" = c("3", "7"),
                                                 "Midwest" = c("4", "5", "6"),
                                                 "West" = c("8", "9"))) %>%
        mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
        mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
        mutate(SEX_F = fct_recode(SEX,
                                "Male" = "1",
                                "Female" = "2")) %>%
        mutate(RACE_F = fct_collapse(RACE,
                                "White" = c("01"),
                                "Black" = c("02"),
                                "Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
                                            "16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
                                            "32", "96", "97"),
                                "Other/Unk" = c("03", "98", "99"))) %>%
        mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
                                       "Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
                                       "No" = c("0"),
                                       "Unknown" = c("9"))) %>%
        mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
                                         "None" = "0",
                                         "Private" = "1",
                                         "Medicaid" = "2",
                                         "Medicare" = "3",
                                         "Other Government" = "4",
                                         "Unknown" = "9")) %>%
        mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
                                         "Private")) %>%
        mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
                                      "Less than $38,000" = "1",
                                      "$38,000 - $47,999" = "2",
                                      "$48,000 - $62,999" = "3",
                                      "$63,000 +" = "4")) %>%
        mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
                                        "21% or more" = "1",
                                        "13 - 20.9%" = "2",
                                        "7 - 12.9%" = "3",
                                        "Less than 7%" = "4")) %>%
        mutate(U_R_F = fct_collapse(UR_CD_13,
                                    "Metro" = c("1", "2", "3"),
                                    "Urban" = c("4", "5", "6", "7"),
                                    "Rural" = c("8", "9"))) %>%
        mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
                                              All_Part_Prim = c("10", "11", "12", "13",
                                                                "14", "20", "21", "22"),
                                              Other_Facility = c("00"))) %>%
        mutate(GRADE_F = fct_recode(GRADE,
                                  "Gr I: Well Diff" = "1",
                                  "Gr II: Mod Diff" = "2",
                                  "Gr III: Poor Diff" = "3",
                                  "Gr IV: Undiff/Anaplastic" = "4",
                                  "NA/Unkown" = "9")) %>%
        mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
        mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
        mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
        mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
                                        "1")) %>%
        mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
                                        "1")) %>%
        mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
                                       "N_A" = "88")) %>%
        mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
                                    "No Residual" = "0",
                                    "Residual, NOS" = "1",
                                    "Microscopic Resid" = "2",
                                    "Macroscopic Resid" = "3",
                                    "Not evaluable" = "7",
                                    "No surg" = "8",
                                    "Unknown" = "9")) %>%
        mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
                                         "Yes" = c("1", "2", "3"),
                                         "No" = c("0"),
                                         "No surg/Unk/NA" = c("7", "8", "9"))) %>%
        mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
                                                 "No_Surg_or_No_Readmit" = "0",
                                                 "Unplan_Readmit_Same" = "1",
                                                 "Plan_Readmit_Same" = "2",
                                                 "PlanUnplan_Same" = "3",
                                                 "Unknown" = "4")) %>%
        mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
                                                "None" = "0",
                                                "Beam Radiation" = "1",
                                                "Radioactive Implants" = "2",
                                                "Radioisotopes" = "3",
                                                "Beam + Imp or Isotopes" = "4",
                                                "Radiation, NOS" = "5",
                                                "Unknown" = "9")) %>%
        mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
                                                 "Alive_30" = "0",
                                                 "Dead_30" = "1",
                                                 "Unknown" = "9")) %>%
        mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
                                                 "Alive_90" = "0",
                                                 "Dead_90" = "1",
                                                 "Unknown" = "9")) %>%
        mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
                                                      "Neg_LymphVasc_Inv" = "0",
                                                      "Pos_LumphVasc_Inv" = "1",
                                                      "N_A" = "8",
                                                      "Unknown" = "9")) %>%
        mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
                                                     "No_Surg" = "0",
                                                     "Robot_Assist" = "1",
                                                     "Robot_to_Open" = "2",
                                                     "Endo_Lap" = "3",
                                                     "Endo_Lap_to_Open" = "4",
                                                     "Open_Unknown" = "5",
                                                     "Unknown" = "9")) %>%
        mutate(All = "All") %>%
        mutate(All = factor(All)) %>%
        mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
                                                    "Surg performed" = "0",
                                                    "Surg not recommended" = "1",
                                                    "No surg due to pt factors" = "2",
                                                    "No surg, pt died" = "5",
                                                    "Surg rec, not done" = "6",
                                                    "Surg rec, pt refused" = "7",
                                                    "Surg rec, unk if done" = "8",
                                                    "Unknown" = "9")) %>%
        mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
                                   "Yes",
                                   ifelse(REASON_FOR_NO_SURGERY == "9",
                                          "Ukn",
                                          "No"))) %>%
        mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
                             SURGERY_YN == "No" ~ FALSE,
                             TRUE ~ NA))  %>%
        mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
                                                    "Rad performed" = "0",
                                                    "Rad not recommended" = "1",
                                                    "No Rad due to pt factors" = "2",
                                                    "No Rad, pt died" = "5",
                                                    "Rad rec, not done" = "6",
                                                    "Rad rec, pt refused" = "7",
                                                    "Rad rec, unk if done" = "8",
                                                    "Unknown" = "9")) %>%
        mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
                                   "Yes",
                                   ifelse(REASON_FOR_NO_RADIATION == "9",
                                          NA,
                                          "No"))) %>%
        mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
                                                   "None or Surg or Rad" = "0",
                                                   "Rad before Surg" = "2",
                                                   "Surg before Rad" = "3",
                                                   "Rad before and after Surg" = "4",
                                                   "Intraop Rad" = "5",
                                                   "Intraop Rad plus other" = "6",
                                                   "Unknown" = "9")) %>%
        mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
                                     "Surg Alone",
                                     ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
                                            "Rad Alone",
                                            ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
                                                   "No Treatment",
                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "2",
                                                          "Rad then Surg",
                                                          ifelse(RX_SUMM_SURGRAD_SEQ == "3",
                                                                 "Surg then Rad",
                                                                 ifelse(RX_SUMM_SURGRAD_SEQ == "4",
                                                                        "Rad before and after Surg",
                                                                        "Other"))))))) %>%
        mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
                                          "Surg Alone",
                                          "Surg then Rad",
                                          "Rad Alone")) %>%
        mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
                                       "No" = c("00", "82", "85", "86", "87"),
                                       "Yes" = c("01", "02", "03"),
                                       "Ukn" = c("88", "99"))) %>%
        mutate(IMMUNO_YN = fct_collapse(RX_SUMM_IMMUNOTHERAPY,
                                       "No" = c("00", "82", "85", "86", "87"),
                                       "Yes" = c("01"),
                                       "Ukn" = c("88", "99"))) %>%
        mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                     "Surg, No rad, No Chemo",
                                     ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                            "Rad, No Surg, No Chemo",
                                            ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                                   "No Surg, No Rad, No Chemo",
                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
                                                          "Rad then Surg, No Chemo",
                                                          ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
                                                                 "Surg then Rad, No Chemo",
                                                                 ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
                                                                        "Rad before and after Surg, No Chemo",
                                ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                       "Surg, No rad, Yes Chemo",
                                       ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                              "Rad, No Surg, Yes Chemo",
                                              ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                                     "No Surg, No Rad, Yes Chemo",
                                                     ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
                                                            "Rad then Surg, Yes Chemo",
                                                            ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
                                                                   "Surg then Rad, Yes Chemo",
                                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
                                                                          "Rad before and after Surg, Yes Chemo",
                                                                          "Other"))))))))))))) %>%
        mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
        mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
        mutate(T_SIZE = ifelse(T_SIZE == 0,
                                "No Tumor",
                                ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
                                       "< 1 cm",
                                       ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
                                              "1-2 cm",
                                              ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
                                                     "2-3 cm",
                                                     ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
                                                            "3-4 cm",
                                                            ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
                                                                   "4-5 cm",
                                                                   ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
                                                                          "5-6 cm",
                                                                          ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
                                                                                         T_SIZE == 980 | T_SIZE == 989 |
                                                                                         T_SIZE == 997,
                                                                          ">6 cm",
                                                                          ifelse(T_SIZE == 988 | T_SIZE == 999,
                                                                                 "NA_unk",
                                                                                 "Microscopic focus")))))))))) %>%
        mutate(T_SIZE = factor(T_SIZE)) %>%
        mutate(T_SIZE = fct_relevel(T_SIZE,
                                     "No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
                                       "4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
        mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
                                      CS_METS_DX_BONE == "1" ~ "Bone",
                                      CS_METS_DX_BRAIN == "1" ~ "Brain",
                                      CS_METS_DX_LIVER == "1" ~ "Liver",
                                      TRUE ~ "None/Other/Unk/NA")) %>%
        mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
                                               "Non-Expansion State" = "0",
                                               "Jan 2014 Expansion States" = "1",
                                               "Early Expansion States (2010-13)" = "2",
                                               "Late Expansion States (> Jan 2014)" = "3",
                                               "Suppressed for Ages 0 - 39" = "9"))  %>%
        mutate(EXPN_GROUP =  case_when(MEDICAID_EXPN_CODE  %in% c("Jan 2014 Expansion States") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
                                       
                                       MEDICAID_EXPN_CODE  %in% c("Jan 2014 Expansion States") & 
                                         YEAR_OF_DIAGNOSIS %in% 
                                          c("2004", "2005", "2006", "2007", "2008", 
                                            "2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
               
                                       MEDICAID_EXPN_CODE  %in% c("Early Expansion States (2010-13)") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
                                       
                                        MEDICAID_EXPN_CODE  %in% c("Early Expansion States (2010-13)") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
                                       MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
                                       MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
                    
                                       MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") & 
                                        YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
                                       
                                       MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
  
  mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", 
                                            "2009", "2010", "2011", "2012", "2013")) %>%
  
  mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>% 
  
  mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No" & 
                          IMMUNO_YN == "No", FALSE, 
                        ifelse(CHEMO_YN == "Ukn", NA, 
                               TRUE)))
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
                 "HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
                 "CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
                 "BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
                 "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
                 "MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
                 "PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
        mutate_at(fact_vars_2, funs(factor(.)))

Extract Data of Interest

# Non-Hodgkin Lymphoma Sites
site_code <- c( 
#additional sites
 #lip  
  "C000", "C001", "C002", "C003", "C004", "C005","C006", "C008","C009",
                                  
                                 
#skin/melanoma
  "C440", "C441", "C442", "C443", "C444", "C445", "C446", "C447", "C448", "C449",
                                 
 #breast - nipple
  "C500",
                                 
#vagina/vulva
  "C510", "C511", "C512", "C518", "C519", "C529",
                                 
#penis
 "C600", "C601", "C602", "C608", "C609", "C639")
#mycosis fungoides, Sezary syndrome, subcutaneous panniculitis-like T-cell lymphoma,
#cutaneous T-cell lymphoma, NOS, primary cutaneous CD30+T-cell lymphoma, 
#NK/T-cell lymphoma, primary cutaneous gamma-delta T-cell lymphoma, 
#and blastic NK cell lymphoma, respectively
#"9700" = Mycosis Fungoides
  # pagetoid reticulosis
#"9701" = Sezary Syndrome
  # Sezary disease
#"9708" = Subcutaneous panniculitislike T-cell lymphoma
#"9709" = Cutaneous T-cell lymphoma, NOS 
  # Cutaneous lymphoma, NOS (C44._); Primary cutaneous CD4-positive small/medium
  # T-cell lymphoma; Primary cutaneous CD8-positive aggressive
  # epidermotropic cytotoxic T-cell lymphoma
#"9718" = Primary cutaneous CD30+ T-cell lymphoproliferative disorder 
  # Lymphomatoid papulosis (C44._), Primary cutaneous anaplastic large cell,
  # lymphoma (C44._), Primary cutaneous CD30+ large T-cell lymphoma (C44._)
#"9726" = Primary cutaneous gamma-delta T-cell lymphoma
histo_code <- c("9701")
behavior_code <- c("3")
data <- dat %>%
        filter(BEHAVIOR %in% behavior_code) %>%
        filter(PRIMARY_SITE %in% site_code) %>%
        filter(HISTOLOGY %in% histo_code) %>%
        #filter(AGE >= 18) %>%
        filter(is.na(PUF_VITAL_STATUS) == FALSE) %>%
        filter(is.na(DX_LASTCONTACT_DEATH_MONTHS) == FALSE)  %>%
        filter(SEQUENCE_NUMBER == "00") 
#file_path <- c("/Users/beastatlife/Google Drive/Penn/Research/Barbieri/NCDB")
#save(data,
#      file = paste0(file_path, "/CTCL_data.Rda"))
#load("MF_data.Rda")

Data including skin tumors was obtained from the NCBD on October 7, 2019. Cases that were included in this analysis were those with:

  1. Site codes: C000, C001, C002, C003, C004, C005, C006, C008, C009, C440, C441, C442, C443, C444, C445, C446, C447, C448, C449, C500, C510, C511, C512, C518, C519, C529, C600, C601, C602, C608, C609, C639
  2. Histology codes: 9701
  3. Behavior codes: 3

Patients were excluded if they didn’t have values for either follow up or vital status.

Patients were excluded if they had surgery to a distant site using RX_SUMM_SURG_OTH_REGDIS. This was done to avoid confounding of different surgical procedures. We are only interested in surgery at the primary site. These distant site surgeries were being counted in the surgery/radiation sequence and thus to simplify analysis they were removed.

data %>%
        CreateTableOne(data = .,
                     vars = c("RX_SUMM_SURG_OTH_REGDIS"),
                     includeNA = TRUE) %>%
        print(.,
              showAllLevels = TRUE)
                             
                              level Overall    
  n                                 340        
  RX_SUMM_SURG_OTH_REGDIS (%) 0     334 (98.2) 
                              1       1 ( 0.3) 
                              2       3 ( 0.9) 
                              3       0 ( 0.0) 
                              4       0 ( 0.0) 
                              5       0 ( 0.0) 
                              9       2 ( 0.6) 
data <- data %>%
        filter(RX_SUMM_SURG_OTH_REGDIS == "0") 

Race was grouped as white, black, asian, other/unknown Stage was grouped into 0, I, II, III, IV, NA_Unknown, stage 0 was removed Whether surgery was performed was based on the REASON_FOR_NO_SURGERY variable. The SURGERY_YN variable was classified as ‘Yes’, ‘No’, or ‘Unknown’.

Whether radiation was performed was based on the REASON_FOR_NO_RADIATION variable. The RADIATION_YN variable was classified as ‘Yes’, ‘No’, or ‘Unknown’.

Table of variables for all cases:

data <- data %>% droplevels()
p_table(data,
        vars = c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "FACILITY_GEOGRAPHY",  "AGE", "AGE_F", "AGE_40",
                 "SEX_F", "RACE_F", "HISPANIC", "INSURANCE_F", 
                 "INCOME_F", "EDUCATION_F", "U_R_F", "CROWFLY", "CDCC_TOTAL_BEST",
                 "SITE_TEXT",  "HISTOLOGY", "BEHAVIOR", "GRADE_F", 
                 "DX_STAGING_PROC_DAYS", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
                 "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
                 "TNM_PATH_STAGE_GROUP", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
                 "DX_DEFSURG_STARTED_DAYS", "MARGINS", "MARGINS_YN", "SURG_DISCHARGE_DAYS",
                 "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
                 "PUF_90_DAY_MORT_CD_F", "DX_LASTCONTACT_DEATH_MONTHS", 
                 "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "SURG_RAD_SEQ",
                 "SURG_RAD_SEQ_C", "SURGERY_YN", "RADIATION_YN", "CHEMO_YN", "IMMUNO_YN", "Tx_YN", "mets_at_dx",
                 "MEDICAID_EXPN_CODE", "EXPN_GROUP", "YEAR_OF_DIAGNOSIS"))
level Overall
n 334
FACILITY_TYPE_F (%) Community Cancer Program 8 ( 2.4)
Comprehensive Comm Ca Program 50 ( 15.0)
Academic/Research Program 254 ( 76.0)
Integrated Network Ca Program 11 ( 3.3)
NA 11 ( 3.3)
FACILITY_LOCATION_F (%) New England 23 ( 6.9)
Middle Atlantic 59 ( 17.7)
South Atlantic 60 ( 18.0)
East North Central 53 ( 15.9)
East South Central 17 ( 5.1)
West North Central 35 ( 10.5)
West South Central 17 ( 5.1)
Mountain 25 ( 7.5)
Pacific 34 ( 10.2)
NA 11 ( 3.3)
FACILITY_GEOGRAPHY (%) Northeast 82 ( 24.6)
South 77 ( 23.1)
Midwest 105 ( 31.4)
West 59 ( 17.7)
NA 11 ( 3.3)
AGE (mean (sd)) 65.71 (12.95)
AGE_F (%) (0,54] 61 ( 18.3)
(54,64] 77 ( 23.1)
(64,74] 107 ( 32.0)
(74,100] 89 ( 26.6)
AGE_40 (%) (0,40] 14 ( 4.2)
(40,100] 320 ( 95.8)
SEX_F (%) Male 191 ( 57.2)
Female 143 ( 42.8)
RACE_F (%) White 246 ( 73.7)
Black 68 ( 20.4)
Other/Unk 14 ( 4.2)
Asian 6 ( 1.8)
HISPANIC (%) No 308 ( 92.2)
Yes 11 ( 3.3)
Unknown 15 ( 4.5)
INSURANCE_F (%) Private 117 ( 35.0)
None 11 ( 3.3)
Medicaid 19 ( 5.7)
Medicare 181 ( 54.2)
Other Government 2 ( 0.6)
Unknown 4 ( 1.2)
INCOME_F (%) Less than $38,000 63 ( 18.9)
$38,000 - $47,999 68 ( 20.4)
$48,000 - $62,999 87 ( 26.0)
$63,000 + 114 ( 34.1)
NA 2 ( 0.6)
EDUCATION_F (%) 21% or more 48 ( 14.4)
13 - 20.9% 78 ( 23.4)
7 - 12.9% 105 ( 31.4)
Less than 7% 102 ( 30.5)
NA 1 ( 0.3)
U_R_F (%) Metro 278 ( 83.2)
Urban 39 ( 11.7)
Rural 3 ( 0.9)
NA 14 ( 4.2)
CROWFLY (mean (sd)) 64.08 (156.22)
CDCC_TOTAL_BEST (%) 0 290 ( 86.8)
1 35 ( 10.5)
2 7 ( 2.1)
3 2 ( 0.6)
SITE_TEXT (%) C44.3 Skin of ear and unspecified parts of face 1 ( 0.3)
C44.4 Skin of scalp and neck 1 ( 0.3)
C44.5 Skin of trunk 13 ( 3.9)
C44.6 Skin of upper limb and shoulder 5 ( 1.5)
C44.7 Skin of lower limb and hip 8 ( 2.4)
C44.8 Overlapping lesion of skin 54 ( 16.2)
C44.9 Skin, NOS 252 ( 75.4)
HISTOLOGY (%) 9701 334 (100.0)
BEHAVIOR (%) 3 334 (100.0)
GRADE_F (%) Gr I: Well Diff 1 ( 0.3)
5 276 ( 82.6)
NA/Unkown 57 ( 17.1)
DX_STAGING_PROC_DAYS (mean (sd)) 4.52 (32.81)
TNM_CLIN_T (%) N_A 4 ( 1.2)
c1 19 ( 5.7)
c2 22 ( 6.6)
c2B 1 ( 0.3)
c3 23 ( 6.9)
c4 149 ( 44.6)
cX 103 ( 30.8)
NA 13 ( 3.9)
TNM_CLIN_N (%) N_A 4 ( 1.2)
c0 104 ( 31.1)
c1 42 ( 12.6)
c1A 2 ( 0.6)
c1B 4 ( 1.2)
c2 10 ( 3.0)
c2B 2 ( 0.6)
c3 17 ( 5.1)
cX 137 ( 41.0)
NA 12 ( 3.6)
TNM_CLIN_M (%) N_A 4 ( 1.2)
c0 281 ( 84.1)
c1 27 ( 8.1)
NA 22 ( 6.6)
TNM_CLIN_STAGE_GROUP (%) 1 5 ( 1.5)
1A 12 ( 3.6)
1B 13 ( 3.9)
2 1 ( 0.3)
2A 5 ( 1.5)
2B 14 ( 4.2)
3 13 ( 3.9)
3A 35 ( 10.5)
3B 29 ( 8.7)
4 28 ( 8.4)
4A 35 ( 10.5)
4A1 46 ( 13.8)
4A2 12 ( 3.6)
4B 30 ( 9.0)
N_A 3 ( 0.9)
99 53 ( 15.9)
TNM_PATH_T (%) N_A 5 ( 1.5)
p1 5 ( 1.5)
p2 12 ( 3.6)
p2B 2 ( 0.6)
p3 10 ( 3.0)
p4 64 ( 19.2)
pX 116 ( 34.7)
NA 120 ( 35.9)
TNM_PATH_N (%) N_A 5 ( 1.5)
p0 23 ( 6.9)
p1 9 ( 2.7)
p1A 1 ( 0.3)
p1B 2 ( 0.6)
p2 5 ( 1.5)
p3 3 ( 0.9)
pX 178 ( 53.3)
NA 108 ( 32.3)
TNM_PATH_M (%) N_A 5 ( 1.5)
p1 14 ( 4.2)
pX 117 ( 35.0)
NA 198 ( 59.3)
TNM_PATH_STAGE_GROUP (%) 1 3 ( 0.9)
1A 2 ( 0.6)
1B 5 ( 1.5)
2A 1 ( 0.3)
2B 4 ( 1.2)
3 3 ( 0.9)
3A 6 ( 1.8)
3B 9 ( 2.7)
4 10 ( 3.0)
4A 5 ( 1.5)
4B 18 ( 5.4)
N_A 3 ( 0.9)
99 218 ( 65.3)
NA 47 ( 14.1)
DX_RX_STARTED_DAYS (mean (sd)) 43.65 (48.04)
DX_SURG_STARTED_DAYS (mean (sd)) 44.10 (63.62)
DX_DEFSURG_STARTED_DAYS (mean (sd)) 58.52 (92.27)
MARGINS (%) No Residual 3 ( 0.9)
Residual, NOS 2 ( 0.6)
Macroscopic Resid 1 ( 0.3)
Not evaluable 12 ( 3.6)
No surg 301 ( 90.1)
Unknown 15 ( 4.5)
MARGINS_YN (%) No 3 ( 0.9)
Yes 3 ( 0.9)
No surg/Unk/NA 328 ( 98.2)
SURG_DISCHARGE_DAYS (mean (sd)) 4.91 (13.91)
READM_HOSP_30_DAYS_F (%) No_Surg_or_No_Readmit 328 ( 98.2)
Plan_Readmit_Same 1 ( 0.3)
9 5 ( 1.5)
RX_SUMM_RADIATION_F (%) None 316 ( 94.6)
Beam Radiation 18 ( 5.4)
PUF_30_DAY_MORT_CD_F (%) Alive_30 13 ( 3.9)
Unknown 1 ( 0.3)
NA 320 ( 95.8)
PUF_90_DAY_MORT_CD_F (%) Alive_90 13 ( 3.9)
Unknown 1 ( 0.3)
NA 320 ( 95.8)
DX_LASTCONTACT_DEATH_MONTHS (mean (sd)) 34.65 (32.04)
LYMPH_VASCULAR_INVASION_F (%) N_A 217 ( 65.0)
NA 117 ( 35.0)
RX_HOSP_SURG_APPR_2010_F (%) No_Surg 203 ( 60.8)
Endo_Lap 1 ( 0.3)
Open_Unknown 12 ( 3.6)
Unknown 1 ( 0.3)
NA 117 ( 35.0)
SURG_RAD_SEQ (%) Surg Alone 32 ( 9.6)
Rad Alone 18 ( 5.4)
No Treatment 282 ( 84.4)
Other 2 ( 0.6)
SURG_RAD_SEQ_C (%) Surg, No rad, No Chemo 12 ( 3.6)
Surg, No rad, Yes Chemo 19 ( 5.7)
No Surg, No Rad, Yes Chemo 153 ( 45.8)
No Surg, No Rad, No Chemo 123 ( 36.8)
Other 9 ( 2.7)
Rad, No Surg, Yes Chemo 14 ( 4.2)
Rad, No Surg, No Chemo 4 ( 1.2)
SURGERY_YN (%) No 300 ( 89.8)
Ukn 2 ( 0.6)
Yes 32 ( 9.6)
RADIATION_YN (%) No 316 ( 94.6)
Yes 18 ( 5.4)
CHEMO_YN (%) No 141 ( 42.2)
Yes 186 ( 55.7)
Ukn 7 ( 2.1)
IMMUNO_YN (%) No 250 ( 74.9)
Yes 83 ( 24.9)
Ukn 1 ( 0.3)
Tx_YN (%) FALSE 86 ( 25.7)
TRUE 241 ( 72.2)
NA 7 ( 2.1)
mets_at_dx (%) Bone 5 ( 1.5)
Liver 1 ( 0.3)
None/Other/Unk/NA 328 ( 98.2)
MEDICAID_EXPN_CODE (%) Non-Expansion State 116 ( 34.7)
Jan 2014 Expansion States 107 ( 32.0)
Early Expansion States (2010-13) 52 ( 15.6)
Late Expansion States (> Jan 2014) 48 ( 14.4)
Suppressed for Ages 0 - 39 11 ( 3.3)
EXPN_GROUP (%) Exclude 11 ( 3.3)
Post-Expansion 58 ( 17.4)
Pre-Expansion 265 ( 79.3)
YEAR_OF_DIAGNOSIS (%) 2004 14 ( 4.2)
2005 12 ( 3.6)
2006 20 ( 6.0)
2007 22 ( 6.6)
2008 22 ( 6.6)
2009 27 ( 8.1)
2010 35 ( 10.5)
2011 34 ( 10.2)
2012 29 ( 8.7)
2013 32 ( 9.6)
2014 39 ( 11.7)
2015 48 ( 14.4)

Kaplan Meier Analysis

All

uni_var(test_var = "All", data_imp = data)
_________________________________________________
   
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ All, data = data)

      n  events  median 0.95LCL 0.95UCL 
  334.0   187.0    36.5    31.1    44.7 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ All, data = data)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    236      60    0.808  0.0223        0.766        0.853
   24    175      44    0.649  0.0280        0.597        0.707
   36    122      36    0.509  0.0302        0.453        0.572
   48     83      18    0.428  0.0309        0.371        0.493
   60     57      14    0.349  0.0317        0.292        0.417
  120     10      14    0.224  0.0353        0.164        0.305



   
## Univariable Cox Proportional Hazard Model for:  All

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  All

Facility Type

uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
   
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

   11 observations deleted due to missingness 
                                                n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Community Cancer Program        8      5   23.9   13.24      NA
FACILITY_TYPE_F=Comprehensive Comm Ca Program  50     26   57.1   30.75     112
FACILITY_TYPE_F=Academic/Research Program     254    142   36.2   31.05      48
FACILITY_TYPE_F=Integrated Network Ca Program  11      8   30.5    9.63      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

11 observations deleted due to missingness 
                FACILITY_TYPE_F=Community Cancer Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       1    0.875   0.117        0.673            1
   24      2       3    0.389   0.201        0.141            1

                FACILITY_TYPE_F=Comprehensive Comm Ca Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     35      10    0.791  0.0590        0.684        0.916
   24     28       5    0.671  0.0703        0.547        0.824
   36     23       2    0.623  0.0730        0.495        0.784
   48     16       3    0.531  0.0793        0.396        0.712
   60     12       1    0.490  0.0831        0.352        0.683
  120      4       5    0.224  0.0899        0.102        0.492

                FACILITY_TYPE_F=Academic/Research Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    181      43    0.817  0.0253        0.769        0.868
   24    135      32    0.664  0.0319        0.605        0.730
   36     91      31    0.503  0.0350        0.439        0.577
   48     61      13    0.426  0.0356        0.361        0.502
   60     39      13    0.327  0.0365        0.263        0.407
  120      5       9    0.229  0.0381        0.165        0.317

                FACILITY_TYPE_F=Integrated Network Ca Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       4    0.636   0.145       0.4071        0.995
   24      5       1    0.530   0.155       0.2992        0.940
   36      4       1    0.424   0.156       0.2063        0.872
   48      2       2    0.212   0.132       0.0628        0.716
   60      2       0    0.212   0.132       0.0628        0.716




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_TYPE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

  n= 323, number of events= 181 
   (11 observations deleted due to missingness)

                                                coef exp(coef) se(coef)      z Pr(>|z|)  
FACILITY_TYPE_FComprehensive Comm Ca Program -0.8538    0.4258   0.4931 -1.731   0.0834 .
FACILITY_TYPE_FAcademic/Research Program     -0.6433    0.5255   0.4584 -1.403   0.1605  
FACILITY_TYPE_FIntegrated Network Ca Program -0.2621    0.7694   0.5734 -0.457   0.6476  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                             exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FComprehensive Comm Ca Program    0.4258      2.349    0.1620     1.119
FACILITY_TYPE_FAcademic/Research Program        0.5255      1.903    0.2140     1.291
FACILITY_TYPE_FIntegrated Network Ca Program    0.7694      1.300    0.2501     2.367

Concordance= 0.526  (se = 0.017 )
Rsquare= 0.012   (max possible= 0.996 )
Likelihood ratio test= 3.9  on 3 df,   p=0.2722
Wald test            = 4.32  on 3 df,   p=0.229
Score (logrank) test = 4.43  on 3 df,   p=0.2185
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_TYPE_F

Facility Location

uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
   
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

   11 observations deleted due to missingness 
                                        n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England        23     12   30.2    25.4      NA
FACILITY_LOCATION_F=Middle Atlantic    59     30   48.0    36.4      NA
FACILITY_LOCATION_F=South Atlantic     60     40   22.7    17.5    41.4
FACILITY_LOCATION_F=East North Central 53     26   52.0    32.5      NA
FACILITY_LOCATION_F=East South Central 17     11   26.6    17.5      NA
FACILITY_LOCATION_F=West North Central 35     22   43.0    34.8    65.4
FACILITY_LOCATION_F=West South Central 17      9   27.2    16.3      NA
FACILITY_LOCATION_F=Mountain           25     15   34.3    23.2      NA
FACILITY_LOCATION_F=Pacific            34     16   41.7    24.4      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

11 observations deleted due to missingness 
                FACILITY_LOCATION_F=New England 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     17       2    0.909  0.0613        0.797        1.000
   24     12       4    0.691  0.1061        0.512        0.934
   36      5       5    0.378  0.1210        0.202        0.708
   48      3       0    0.378  0.1210        0.202        0.708

                FACILITY_LOCATION_F=Middle Atlantic 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     42      10    0.819  0.0518        0.724        0.928
   24     36       6    0.702  0.0627        0.590        0.837
   36     30       4    0.623  0.0670        0.505        0.769
   48     17       4    0.530  0.0717        0.406        0.691
   60     13       3    0.434  0.0772        0.306        0.615

                FACILITY_LOCATION_F=South Atlantic 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     36      17   0.6947  0.0620       0.5832        0.828
   24     21      10   0.4755  0.0715       0.3541        0.639
   36     16       4   0.3804  0.0713       0.2635        0.549
   48     12       3   0.3073  0.0690       0.1978        0.477
   60      7       2   0.2483  0.0673       0.1460        0.422
  120      2       4   0.0851  0.0537       0.0248        0.293

                FACILITY_LOCATION_F=East North Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     42       6    0.882  0.0454        0.797        0.975
   24     34       5    0.774  0.0602        0.665        0.902
   36     23       8    0.587  0.0735        0.459        0.750
   48     17       3    0.502  0.0776        0.371        0.680
   60     11       3    0.405  0.0808        0.274        0.598
  120      2       1    0.360  0.0834        0.228        0.566

                FACILITY_LOCATION_F=East South Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     11       5    0.697   0.114        0.506        0.959
   24      9       2    0.570   0.123        0.373        0.871
   36      4       4    0.285   0.118        0.127        0.642
   48      2       0    0.285   0.118        0.127        0.642

                FACILITY_LOCATION_F=West North Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     26       5    0.840  0.0658        0.720        0.979
   24     20       3    0.733  0.0814        0.589        0.911
   36     15       4    0.582  0.0934        0.425        0.797
   48     12       3    0.465  0.0959        0.311        0.697
   60      9       2    0.381  0.0953        0.233        0.622

                FACILITY_LOCATION_F=West South Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     12       1    0.923  0.0739       0.7890        1.000
   24      6       4    0.575  0.1459       0.3500        0.946
   36      3       1    0.480  0.1498       0.2599        0.885
   48      2       1    0.320  0.1644       0.1167        0.876
   60      1       1    0.160  0.1397       0.0288        0.887
  120      1       0    0.160  0.1397       0.0288        0.887

                FACILITY_LOCATION_F=Mountain 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     17       5    0.783  0.0863       0.6308        0.972
   24     13       3    0.636  0.1037       0.4622        0.876
   36      8       3    0.478  0.1116       0.3028        0.756
   48      5       1    0.399  0.1181       0.2231        0.713
   60      3       2    0.239  0.1125       0.0952        0.601
  120      1       1    0.159  0.0993       0.0471        0.540

                FACILITY_LOCATION_F=Pacific 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     25       7    0.792  0.0700        0.666        0.942
   24     19       4    0.661  0.0838        0.515        0.847
   36     14       2    0.584  0.0901        0.432        0.790
   48      9       3    0.459  0.0955        0.305        0.690
   60      9       0    0.459  0.0955        0.305        0.690
  120      3       0    0.459  0.0955        0.305        0.690




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_LOCATION_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

  n= 323, number of events= 181 
   (11 observations deleted due to missingness)

                                           coef exp(coef)  se(coef)      z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic    -0.425375  0.653525  0.343890 -1.237    0.216
FACILITY_LOCATION_FSouth Atlantic      0.219071  1.244920  0.330981  0.662    0.508
FACILITY_LOCATION_FEast North Central -0.500739  0.606083  0.351308 -1.425    0.154
FACILITY_LOCATION_FEast South Central  0.227972  1.256050  0.417558  0.546    0.585
FACILITY_LOCATION_FWest North Central -0.176015  0.838605  0.360914 -0.488    0.626
FACILITY_LOCATION_FWest South Central -0.007877  0.992154  0.443088 -0.018    0.986
FACILITY_LOCATION_FMountain           -0.024160  0.976130  0.388075 -0.062    0.950
FACILITY_LOCATION_FPacific            -0.512241  0.599151  0.385513 -1.329    0.184

                                      exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic       0.6535     1.5302    0.3331     1.282
FACILITY_LOCATION_FSouth Atlantic        1.2449     0.8033    0.6507     2.382
FACILITY_LOCATION_FEast North Central    0.6061     1.6499    0.3044     1.207
FACILITY_LOCATION_FEast South Central    1.2561     0.7961    0.5541     2.847
FACILITY_LOCATION_FWest North Central    0.8386     1.1925    0.4134     1.701
FACILITY_LOCATION_FWest South Central    0.9922     1.0079    0.4163     2.364
FACILITY_LOCATION_FMountain              0.9761     1.0245    0.4562     2.089
FACILITY_LOCATION_FPacific               0.5992     1.6690    0.2814     1.276

Concordance= 0.572  (se = 0.024 )
Rsquare= 0.045   (max possible= 0.996 )
Likelihood ratio test= 14.83  on 8 df,   p=0.06256
Wald test            = 15.03  on 8 df,   p=0.05848
Score (logrank) test = 15.49  on 8 df,   p=0.05033
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_LOCATION_F

Facility Geography

uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
   
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

   11 observations deleted due to missingness 
                               n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast  82     42   43.4    30.2    81.6
FACILITY_GEOGRAPHY=South      77     49   23.7    20.2    41.4
FACILITY_GEOGRAPHY=Midwest   105     59   41.7    32.5    59.6
FACILITY_GEOGRAPHY=West       59     31   39.2    25.6      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

11 observations deleted due to missingness 
                FACILITY_GEOGRAPHY=Northeast 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     59      12    0.843  0.0418        0.765        0.929
   24     48      10    0.699  0.0540        0.601        0.814
   36     35       9    0.565  0.0594        0.460        0.694
   48     20       4    0.493  0.0620        0.386        0.631
   60     13       4    0.389  0.0675        0.277        0.547

                FACILITY_GEOGRAPHY=South 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     48      18    0.745  0.0521       0.6500        0.855
   24     27      14    0.498  0.0645       0.3859        0.642
   36     19       5    0.398  0.0653       0.2888        0.549
   48     14       4    0.312  0.0639       0.2087        0.466
   60      8       3    0.235  0.0617       0.1409        0.393
  120      3       4    0.103  0.0518       0.0384        0.276

                FACILITY_GEOGRAPHY=Midwest 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     79      16    0.838  0.0372        0.768        0.914
   24     63      10    0.726  0.0461        0.641        0.822
   36     42      16    0.534  0.0534        0.439        0.650
   48     31       6    0.453  0.0547        0.357        0.574
   60     20       5    0.368  0.0561        0.273        0.496
  120      2       6    0.223  0.0596        0.132        0.376

                FACILITY_GEOGRAPHY=West 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     42      12    0.787  0.0546        0.687        0.902
   24     32       7    0.649  0.0654        0.533        0.791
   36     22       5    0.540  0.0705        0.418        0.697
   48     14       4    0.434  0.0740        0.311        0.606
   60     12       2    0.372  0.0753        0.250        0.553
  120      4       1    0.338  0.0757        0.218        0.524




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_GEOGRAPHY

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

  n= 323, number of events= 181 
   (11 observations deleted due to missingness)

                             coef exp(coef) se(coef)     z Pr(>|z|)  
FACILITY_GEOGRAPHYSouth   0.49512   1.64069  0.21103 2.346    0.019 *
FACILITY_GEOGRAPHYMidwest 0.04494   1.04597  0.20203 0.222    0.824  
FACILITY_GEOGRAPHYWest    0.02051   1.02072  0.23760 0.086    0.931  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                          exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth       1.641     0.6095    1.0849     2.481
FACILITY_GEOGRAPHYMidwest     1.046     0.9561    0.7040     1.554
FACILITY_GEOGRAPHYWest        1.021     0.9797    0.6407     1.626

Concordance= 0.541  (se = 0.023 )
Rsquare= 0.022   (max possible= 0.996 )
Likelihood ratio test= 7.32  on 3 df,   p=0.06233
Wald test            = 7.89  on 3 df,   p=0.04835
Score (logrank) test = 8.03  on 3 df,   p=0.04531
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_GEOGRAPHY

Age Group

uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
   
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

                 n events median 0.95LCL 0.95UCL
AGE_F=(0,54]    61     34   33.5    27.2      NA
AGE_F=(54,64]   77     35   59.4    34.8      NA
AGE_F=(64,74]  107     55   40.2    35.0    56.6
AGE_F=(74,100]  89     63   26.6    22.0    35.2

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

                AGE_F=(0,54] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     47      10    0.829  0.0492        0.738        0.932
   24     35       9    0.664  0.0631        0.551        0.800
   36     26       9    0.494  0.0679        0.377        0.646
   48     24       0    0.494  0.0679        0.377        0.646
   60     19       3    0.430  0.0684        0.315        0.587
  120      6       2    0.375  0.0701        0.260        0.541

                AGE_F=(54,64] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     57       8    0.888  0.0374        0.818        0.964
   24     45       9    0.741  0.0547        0.641        0.856
   36     31       8    0.597  0.0635        0.485        0.736
   48     24       3    0.532  0.0667        0.417        0.681
   60     16       2    0.480  0.0699        0.361        0.639
  120      3       5    0.229  0.0950        0.101        0.516

                AGE_F=(64,74] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     74      20    0.796  0.0409        0.719        0.880
   24     57       9    0.691  0.0481        0.603        0.792
   36     40       8    0.588  0.0532        0.492        0.702
   48     23       8    0.461  0.0580        0.360        0.590
   60     12       7    0.306  0.0618        0.206        0.455
  120      1       3    0.201  0.0645        0.107        0.377

                AGE_F=(74,100] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     58      22    0.740  0.0478        0.652        0.840
   24     38      17    0.514  0.0565        0.415        0.638
   36     25      11    0.363  0.0554        0.269        0.489
   48     12       7    0.240  0.0531        0.155        0.370
   60     10       2    0.200  0.0512        0.121        0.330




   
## Univariable Cox Proportional Hazard Model for:  AGE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

  n= 334, number of events= 187 

                  coef exp(coef) se(coef)      z Pr(>|z|)   
AGE_F(54,64]  -0.06007   0.94170  0.24187 -0.248  0.80387   
AGE_F(64,74]   0.19719   1.21797  0.22119  0.891  0.37267   
AGE_F(74,100]  0.67073   1.95566  0.21654  3.097  0.00195 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

              exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64]     0.9417     1.0619    0.5862     1.513
AGE_F(64,74]     1.2180     0.8210    0.7895     1.879
AGE_F(74,100]    1.9557     0.5113    1.2793     2.990

Concordance= 0.574  (se = 0.023 )
Rsquare= 0.045   (max possible= 0.997 )
Likelihood ratio test= 15.55  on 3 df,   p=0.0014
Wald test            = 16.31  on 3 df,   p=0.0009774
Score (logrank) test = 16.85  on 3 df,   p=0.0007603
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  AGE_F

Age Group

uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
   
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

                  n events median 0.95LCL 0.95UCL
AGE_40=(0,40]    14      7   31.5    21.6      NA
AGE_40=(40,100] 320    180   36.5    31.1    44.7

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

                AGE_40=(0,40] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     11       2    0.851  0.0973        0.680        1.000
   24      7       3    0.602  0.1397        0.382        0.949
   36      5       2    0.430  0.1433        0.224        0.826
   48      5       0    0.430  0.1433        0.224        0.826
   60      5       0    0.430  0.1433        0.224        0.826
  120      1       0    0.430  0.1433        0.224        0.826

                AGE_40=(40,100] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    225      58    0.806  0.0229        0.763        0.852
   24    168      41    0.652  0.0286        0.598        0.710
   36    117      34    0.513  0.0309        0.456        0.577
   48     78      18    0.427  0.0317        0.369        0.494
   60     52      14    0.343  0.0326        0.285        0.413
  120      9      14    0.213  0.0357        0.154        0.296




   
## Univariable Cox Proportional Hazard Model for:  AGE_40

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

  n= 334, number of events= 187 

                 coef exp(coef) se(coef)     z Pr(>|z|)
AGE_40(40,100] 0.2716    1.3120   0.3859 0.704    0.482

               exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100]     1.312     0.7622    0.6158     2.795

Concordance= 0.502  (se = 0.008 )
Rsquare= 0.002   (max possible= 0.997 )
Likelihood ratio test= 0.54  on 1 df,   p=0.4629
Wald test            = 0.5  on 1 df,   p=0.4816
Score (logrank) test = 0.5  on 1 df,   p=0.4802
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  AGE_40

Gender

uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
   
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

               n events median 0.95LCL 0.95UCL
SEX_F=Male   191    100   39.2    28.3    57.1
SEX_F=Female 143     87   35.0    30.2    47.0

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

                SEX_F=Male 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    135      38    0.789  0.0305        0.731        0.851
   24     99      25    0.633  0.0371        0.565        0.710
   36     72      17    0.520  0.0394        0.448        0.603
   48     50       8    0.456  0.0406        0.383        0.543
   60     34       5    0.407  0.0418        0.332        0.497
  120      5       7    0.254  0.0580        0.163        0.398

                SEX_F=Female 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    101      22    0.836  0.0320        0.776        0.902
   24     76      19    0.672  0.0425        0.594        0.761
   36     50      19    0.494  0.0471        0.409        0.595
   48     33      10    0.389  0.0474        0.306        0.494
   60     23       9    0.281  0.0460        0.203        0.387
  120      5       7    0.172  0.0436        0.104        0.282




   
## Univariable Cox Proportional Hazard Model for:  SEX_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

  n= 334, number of events= 187 

              coef exp(coef) se(coef)     z Pr(>|z|)
SEX_FFemale 0.1924    1.2121   0.1467 1.311     0.19

            exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale     1.212      0.825    0.9091     1.616

Concordance= 0.507  (se = 0.02 )
Rsquare= 0.005   (max possible= 0.997 )
Likelihood ratio test= 1.71  on 1 df,   p=0.1913
Wald test            = 1.72  on 1 df,   p=0.1899
Score (logrank) test = 1.72  on 1 df,   p=0.1893
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SEX_F

RACE_F

uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
   
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

                   n events median 0.95LCL 0.95UCL
RACE_F=White     246    139   35.2    28.4      48
RACE_F=Black      68     37   39.2    30.8      NA
RACE_F=Other/Unk  14      9   43.0    34.3      NA
RACE_F=Asian       6      2     NA    21.7      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

                RACE_F=White 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    169      45    0.802  0.0266        0.751        0.855
   24    122      35    0.627  0.0334        0.565        0.696
   36     87      25    0.493  0.0354        0.429        0.568
   48     59      11    0.424  0.0362        0.359        0.501
   60     43       9    0.355  0.0369        0.289        0.435
  120      7      13    0.195  0.0408        0.129        0.293

                RACE_F=Black 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     50      13    0.806  0.0484        0.716        0.907
   24     41       6    0.705  0.0573        0.601        0.827
   36     27       9    0.543  0.0649        0.429        0.686
   48     19       5    0.440  0.0670        0.326        0.593
   60     13       3    0.364  0.0684        0.252        0.526
  120      3       1    0.334  0.0691        0.222        0.501

                RACE_F=Other/Unk 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     12       1    0.923  0.0739        0.789        1.000
   24      9       2    0.755  0.1232        0.549        1.000
   36      7       2    0.587  0.1419        0.366        0.943
   48      4       2    0.420  0.1426        0.216        0.817

                RACE_F=Asian 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       1    0.833   0.152        0.583            1
   24      3       1    0.625   0.213        0.320            1
   36      1       0    0.625   0.213        0.320            1
   48      1       0    0.625   0.213        0.320            1
   60      1       0    0.625   0.213        0.320            1




   
## Univariable Cox Proportional Hazard Model for:  RACE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

  n= 334, number of events= 187 

                    coef exp(coef) se(coef)      z Pr(>|z|)
RACE_FBlack     -0.16743   0.84584  0.18519 -0.904    0.366
RACE_FOther/Unk  0.03654   1.03722  0.34526  0.106    0.916
RACE_FAsian     -0.45470   0.63464  0.71268 -0.638    0.523

                exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack        0.8458     1.1823    0.5884     1.216
RACE_FOther/Unk    1.0372     0.9641    0.5272     2.041
RACE_FAsian        0.6346     1.5757    0.1570     2.565

Concordance= 0.504  (se = 0.018 )
Rsquare= 0.004   (max possible= 0.997 )
Likelihood ratio test= 1.29  on 3 df,   p=0.7308
Wald test            = 1.22  on 3 df,   p=0.7493
Score (logrank) test = 1.22  on 3 df,   p=0.7474
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RACE_F

Hispanic

uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
   
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

                   n events median 0.95LCL 0.95UCL
HISPANIC=No      308    174   35.2    30.5    44.7
HISPANIC=Yes      11      6   59.4    13.9      NA
HISPANIC=Unknown  15      7   45.5    36.4      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

                HISPANIC=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    216      58    0.799  0.0236        0.754        0.847
   24    158      41    0.638  0.0294        0.583        0.699
   36    108      33    0.498  0.0315        0.440        0.564
   48     75      15    0.424  0.0322        0.365        0.492
   60     53      12    0.350  0.0329        0.291        0.421
  120      9      14    0.214  0.0366        0.153        0.299

                HISPANIC=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       2    0.808   0.122        0.600        1.000
   24      6       2    0.606   0.154        0.368        0.998
   36      5       1    0.505   0.158        0.273        0.933
   48      2       0    0.505   0.158        0.273        0.933

                HISPANIC=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     12       0    1.000  0.0000        1.000        1.000
   24     11       1    0.917  0.0798        0.773        1.000
   36      9       2    0.750  0.1250        0.541        1.000
   48      6       3    0.500  0.1443        0.284        0.880
   60      4       1    0.417  0.1423        0.213        0.814
  120      1       0    0.417  0.1423        0.213        0.814




   
## Univariable Cox Proportional Hazard Model for:  HISPANIC

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

  n= 334, number of events= 187 

                    coef exp(coef) se(coef)      z Pr(>|z|)
HISPANICYes      0.03394   1.03453  0.41606  0.082    0.935
HISPANICUnknown -0.51101   0.59989  0.38608 -1.324    0.186

                exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes        1.0345     0.9666    0.4577     2.338
HISPANICUnknown    0.5999     1.6670    0.2815     1.278

Concordance= 0.514  (se = 0.011 )
Rsquare= 0.006   (max possible= 0.997 )
Likelihood ratio test= 2.08  on 2 df,   p=0.3542
Wald test            = 1.77  on 2 df,   p=0.4131
Score (logrank) test = 1.81  on 2 df,   p=0.4052
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  HISPANIC

Insurance Status

uni_var(test_var = "INSURANCE_F", data_imp = data)
_________________________________________________
   
## INSURANCE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

                               n events median 0.95LCL 0.95UCL
INSURANCE_F=Private          117     52   63.3   43.43      NA
INSURANCE_F=None              11      7   27.2    5.06      NA
INSURANCE_F=Medicaid          19     13   31.5   21.59      NA
INSURANCE_F=Medicare         181    112   31.1   25.89    37.5
INSURANCE_F=Other Government   2      2   38.1   34.30      NA
INSURANCE_F=Unknown            4      1     NA   17.51      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

                INSURANCE_F=Private 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     89      12    0.889  0.0303        0.831        0.950
   24     72      12    0.764  0.0423        0.686        0.852
   36     52      13    0.621  0.0496        0.531        0.727
   48     41       4    0.568  0.0520        0.475        0.680
   60     31       3    0.522  0.0542        0.426        0.640
  120      6       7    0.339  0.0738        0.221        0.519

                INSURANCE_F=None 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       5    0.530   0.155       0.2992        0.940
   24      3       0    0.530   0.155       0.2992        0.940
   36      2       1    0.354   0.177       0.1322        0.946
   48      2       0    0.354   0.177       0.1322        0.946
   60      1       1    0.177   0.153       0.0323        0.967
  120      1       0    0.177   0.153       0.0323        0.967

                INSURANCE_F=Medicaid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     14       4    0.780  0.0972       0.6111        0.996
   24      9       5    0.502  0.1178       0.3164        0.795
   36      5       2    0.366  0.1193       0.1930        0.693
   48      4       0    0.366  0.1193       0.1930        0.693
   60      3       1    0.274  0.1195       0.1168        0.644
  120      1       1    0.137  0.1139       0.0269        0.698

                INSURANCE_F=Medicare 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    123      39    0.771  0.0323       0.7100        0.837
   24     86      26    0.597  0.0391       0.5249        0.679
   36     60      19    0.459  0.0410       0.3851        0.547
   48     34      13    0.350  0.0411       0.2783        0.441
   60     20       9    0.247  0.0410       0.1788        0.343
  120      2       6    0.148  0.0403       0.0869        0.252

                INSURANCE_F=Other Government 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      2       0      1.0   0.000        1.000            1
   36      1       1      0.5   0.354        0.125            1

                INSURANCE_F=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0     1.00   0.000        1.000            1
   24      3       1     0.75   0.217        0.426            1
   36      2       0     0.75   0.217        0.426            1
   48      2       0     0.75   0.217        0.426            1
   60      2       0     0.75   0.217        0.426            1




   
## Univariable Cox Proportional Hazard Model for:  INSURANCE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

  n= 334, number of events= 187 

                               coef exp(coef) se(coef)      z Pr(>|z|)    
INSURANCE_FNone              1.0035    2.7278   0.4037  2.486 0.012927 *  
INSURANCE_FMedicaid          0.6129    1.8458   0.3108  1.972 0.048567 *  
INSURANCE_FMedicare          0.6186    1.8563   0.1691  3.659 0.000254 ***
INSURANCE_FOther Government  0.7457    2.1079   0.7223  1.032 0.301889    
INSURANCE_FUnknown          -0.8503    0.4273   1.0098 -0.842 0.399750    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                            exp(coef) exp(-coef) lower .95 upper .95
INSURANCE_FNone                2.7278     0.3666   1.23648     6.018
INSURANCE_FMedicaid            1.8458     0.5418   1.00386     3.394
INSURANCE_FMedicare            1.8563     0.5387   1.33270     2.586
INSURANCE_FOther Government    2.1079     0.4744   0.51172     8.683
INSURANCE_FUnknown             0.4273     2.3405   0.05904     3.092

Concordance= 0.581  (se = 0.021 )
Rsquare= 0.057   (max possible= 0.997 )
Likelihood ratio test= 19.57  on 5 df,   p=0.001505
Wald test            = 17.82  on 5 df,   p=0.003178
Score (logrank) test = 18.74  on 5 df,   p=0.002153
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  INSURANCE_F

Income

class(data$INCOME_F)
[1] "factor"
uni_var(test_var = "INCOME_F", data_imp = data)
_________________________________________________
   
## INCOME_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INCOME_F, data = data)

   2 observations deleted due to missingness 
                             n events median 0.95LCL 0.95UCL
INCOME_F=Less than $38,000  63     38   37.5    30.9    63.3
INCOME_F=$38,000 - $47,999  68     34   47.0    28.2      NA
INCOME_F=$48,000 - $62,999  87     52   33.5    24.4    48.2
INCOME_F=$63,000 +         114     62   35.2    28.0    54.4

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INCOME_F, data = data)

2 observations deleted due to missingness 
                INCOME_F=Less than $38,000 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     42      16    0.739  0.0563        0.637        0.858
   24     36       3    0.683  0.0606        0.574        0.813
   36     28       6    0.564  0.0668        0.447        0.711
   48     20       5    0.461  0.0687        0.344        0.617
   60     14       3    0.383  0.0704        0.267        0.549
  120      2       5    0.222  0.0695        0.121        0.410

                INCOME_F=$38,000 - $47,999 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     47      12    0.807  0.0502        0.715        0.912
   24     37       5    0.715  0.0591        0.608        0.840
   36     26       9    0.540  0.0676        0.422        0.690
   48     19       2    0.493  0.0695        0.374        0.650
   60     15       2    0.439  0.0715        0.319        0.604
  120      2       3    0.244  0.0967        0.112        0.531

                INCOME_F=$48,000 - $62,999 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     66      14    0.831  0.0411        0.755        0.916
   24     45      17    0.604  0.0558        0.504        0.723
   36     29       9    0.475  0.0582        0.374        0.604
   48     19       6    0.371  0.0590        0.271        0.507
   60     12       4    0.284  0.0593        0.189        0.428
  120      4       2    0.237  0.0581        0.147        0.383

                INCOME_F=$63,000 + 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     80      18    0.830  0.0367        0.761        0.905
   24     56      19    0.625  0.0494        0.535        0.729
   36     39      11    0.493  0.0527        0.400        0.608
   48     25       5    0.422  0.0539        0.329        0.542
   60     16       5    0.332  0.0556        0.239        0.461
  120      2       4    0.218  0.0601        0.127        0.374




   
## Univariable Cox Proportional Hazard Model for:  INCOME_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INCOME_F, data = data)

  n= 332, number of events= 186 
   (2 observations deleted due to missingness)

                              coef exp(coef) se(coef)      z Pr(>|z|)
INCOME_F$38,000 - $47,999 -0.13646   0.87244  0.23617 -0.578    0.563
INCOME_F$48,000 - $62,999  0.08700   1.09090  0.21393  0.407    0.684
INCOME_F$63,000 +          0.04258   1.04350  0.20663  0.206    0.837

                          exp(coef) exp(-coef) lower .95 upper .95
INCOME_F$38,000 - $47,999    0.8724     1.1462    0.5492     1.386
INCOME_F$48,000 - $62,999    1.0909     0.9167    0.7173     1.659
INCOME_F$63,000 +            1.0435     0.9583    0.6960     1.564

Concordance= 0.513  (se = 0.023 )
Rsquare= 0.003   (max possible= 0.997 )
Likelihood ratio test= 1.13  on 3 df,   p=0.7696
Wald test            = 1.1  on 3 df,   p=0.777
Score (logrank) test = 1.1  on 3 df,   p=0.7762
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  INCOME_F

Education

uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
   
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

   1 observation deleted due to missingness 
                           n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more   48     26   43.4    27.2      NA
EDUCATION_F=13 - 20.9%    78     49   30.5    25.4    47.0
EDUCATION_F=7 - 12.9%    105     61   34.4    25.6    48.0
EDUCATION_F=Less than 7% 102     50   53.8    35.2    65.4

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

1 observation deleted due to missingness 
                EDUCATION_F=21% or more 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     33      10    0.779  0.0619        0.667        0.910
   24     26       5    0.656  0.0726        0.528        0.815
   36     20       3    0.573  0.0778        0.439        0.747
   48     14       3    0.480  0.0816        0.344        0.670
   60      6       4    0.309  0.0886        0.176        0.542
  120      2       0    0.309  0.0886        0.176        0.542

                EDUCATION_F=13 - 20.9% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     53      20    0.738  0.0505        0.645        0.843
   24     41       8    0.618  0.0573        0.515        0.741
   36     26      11    0.446  0.0606        0.341        0.582
   48     17       5    0.352  0.0608        0.251        0.494
   60     14       1    0.332  0.0606        0.232        0.475
  120      2       4    0.197  0.0664        0.101        0.381

                EDUCATION_F=7 - 12.9% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     74      19    0.805  0.0403        0.729        0.888
   24     53      17    0.612  0.0511        0.519        0.720
   36     36      12    0.465  0.0537        0.371        0.583
   48     25       6    0.381  0.0538        0.289        0.503
   60     21       3    0.335  0.0536        0.245        0.458
  120      4       4    0.219  0.0619        0.126        0.381

                EDUCATION_F=Less than 7% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     75      11    0.883  0.0333        0.820        0.950
   24     54      14    0.708  0.0497        0.617        0.813
   36     40       9    0.587  0.0553        0.488        0.706
   48     27       4    0.523  0.0579        0.421        0.649
   60     16       6    0.394  0.0634        0.287        0.540
  120      2       6    0.195  0.0664        0.101        0.380




   
## Univariable Cox Proportional Hazard Model for:  EDUCATION_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

  n= 333, number of events= 186 
   (1 observation deleted due to missingness)

                            coef exp(coef) se(coef)      z Pr(>|z|)
EDUCATION_F13 - 20.9%    0.21468   1.23947  0.24295  0.884    0.377
EDUCATION_F7 - 12.9%     0.09272   1.09715  0.23465  0.395    0.693
EDUCATION_FLess than 7% -0.08876   0.91507  0.24212 -0.367    0.714

                        exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9%      1.2395     0.8068    0.7699     1.995
EDUCATION_F7 - 12.9%       1.0972     0.9115    0.6927     1.738
EDUCATION_FLess than 7%    0.9151     1.0928    0.5693     1.471

Concordance= 0.549  (se = 0.023 )
Rsquare= 0.007   (max possible= 0.997 )
Likelihood ratio test= 2.43  on 3 df,   p=0.4884
Wald test            = 2.43  on 3 df,   p=0.4882
Score (logrank) test = 2.44  on 3 df,   p=0.486
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  EDUCATION_F

Urban/Rural

uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
   
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

   14 observations deleted due to missingness 
              n events median 0.95LCL 0.95UCL
U_R_F=Metro 278    158   36.7    32.5      47
U_R_F=Urban  39     18   61.4    25.8      NA
U_R_F=Rural   3      2   16.9    10.6      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

14 observations deleted due to missingness 
                U_R_F=Metro 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    201      48    0.816  0.0240        0.771        0.865
   24    152      35    0.667  0.0301        0.611        0.729
   36    103      33    0.514  0.0330        0.454        0.583
   48     69      17    0.423  0.0338        0.362        0.495
   60     46      14    0.330  0.0344        0.269        0.405
  120      9      10    0.224  0.0377        0.161        0.312

                U_R_F=Urban 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     26       8    0.783  0.0683        0.660        0.929
   24     19       4    0.653  0.0823        0.510        0.836
   36     16       2    0.580  0.0877        0.432        0.780
   48     13       1    0.544  0.0894        0.394        0.751
   60     10       0    0.544  0.0894        0.394        0.751
  120      1       3    0.282  0.1340        0.111        0.715

                U_R_F=Rural 
        time       n.risk      n.event     survival      std.err lower 95% CI upper 95% CI 
      12.000        1.000        1.000        0.500        0.354        0.125        1.000 




   
## Univariable Cox Proportional Hazard Model for:  U_R_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

  n= 320, number of events= 178 
   (14 observations deleted due to missingness)

              coef exp(coef) se(coef)      z Pr(>|z|)
U_R_FUrban -0.2387    0.7876   0.2491 -0.958    0.338
U_R_FRural  1.0499    2.8574   0.7160  1.466    0.143

           exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban    0.7876       1.27    0.4834     1.283
U_R_FRural    2.8574       0.35    0.7023    11.625

Concordance= 0.509  (se = 0.014 )
Rsquare= 0.008   (max possible= 0.996 )
Likelihood ratio test= 2.63  on 2 df,   p=0.2691
Wald test            = 3.17  on 2 df,   p=0.2051
Score (logrank) test = 3.4  on 2 df,   p=0.1823
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  U_R_F

Class (treatment at performing facility)

uni_var(test_var = "CLASS_OF_CASE_F", data_imp = data)
_________________________________________________
   
## CLASS_OF_CASE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

                                 n events median 0.95LCL 0.95UCL
CLASS_OF_CASE_F=Other_Facility  22      9   36.2    18.6      NA
CLASS_OF_CASE_F=All_Part_Prim  312    178   36.5    31.1      47

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

                CLASS_OF_CASE_F=Other_Facility 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       5    0.705   0.113        0.515        0.966
   24      8       1    0.627   0.125        0.424        0.926
   36      7       1    0.548   0.131        0.343        0.877
   48      3       2    0.353   0.143        0.159        0.781
   60      2       0    0.353   0.143        0.159        0.781

                CLASS_OF_CASE_F=All_Part_Prim 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    226      55    0.814  0.0227        0.771        0.860
   24    167      43    0.651  0.0287        0.597        0.710
   36    115      35    0.507  0.0310        0.450        0.572
   48     80      16    0.431  0.0317        0.373        0.498
   60     55      14    0.349  0.0324        0.291        0.419
  120     10      14    0.224  0.0356        0.164        0.306




   
## Univariable Cox Proportional Hazard Model for:  CLASS_OF_CASE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

  n= 334, number of events= 187 

                                coef exp(coef) se(coef)      z Pr(>|z|)
CLASS_OF_CASE_FAll_Part_Prim -0.1152    0.8912   0.3427 -0.336    0.737

                             exp(coef) exp(-coef) lower .95 upper .95
CLASS_OF_CASE_FAll_Part_Prim    0.8912      1.122    0.4553     1.744

Concordance= 0.505  (se = 0.009 )
Rsquare= 0   (max possible= 0.997 )
Likelihood ratio test= 0.11  on 1 df,   p=0.7411
Wald test            = 0.11  on 1 df,   p=0.7368
Score (logrank) test = 0.11  on 1 df,   p=0.7366
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  CLASS_OF_CASE_F

Year

uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
   
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

                        n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004 14     11   29.9    23.2      NA
YEAR_OF_DIAGNOSIS=2005 12      8   27.9    11.6      NA
YEAR_OF_DIAGNOSIS=2006 20     12   40.2    23.2      NA
YEAR_OF_DIAGNOSIS=2007 22     16   31.1    22.7    66.2
YEAR_OF_DIAGNOSIS=2008 22     19   35.2    23.2    84.1
YEAR_OF_DIAGNOSIS=2009 27     21   35.0    30.8    73.5
YEAR_OF_DIAGNOSIS=2010 35     22   28.2    20.2      NA
YEAR_OF_DIAGNOSIS=2011 34     18   48.7    24.4      NA
YEAR_OF_DIAGNOSIS=2012 29     14   48.2    34.3      NA
YEAR_OF_DIAGNOSIS=2013 32     14   43.4    30.2      NA
YEAR_OF_DIAGNOSIS=2014 39     12     NA    21.8      NA
YEAR_OF_DIAGNOSIS=2015 48     20   26.6    20.3      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

                YEAR_OF_DIAGNOSIS=2004 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     12       2    0.857  0.0935       0.6921        1.000
   24      9       3    0.643  0.1281       0.4351        0.950
   36      6       3    0.429  0.1323       0.2341        0.785
   48      5       1    0.357  0.1281       0.1769        0.721
   60      4       1    0.286  0.1207       0.1248        0.654
  120      3       1    0.214  0.1097       0.0786        0.584

                YEAR_OF_DIAGNOSIS=2005 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      7       4    0.656   0.140        0.432        0.997
   24      6       1    0.562   0.148        0.336        0.943
   36      5       1    0.469   0.150        0.250        0.879
   48      3       1    0.352   0.152        0.151        0.819
   60      3       0    0.352   0.152        0.151        0.819
  120      3       0    0.352   0.152        0.151        0.819

                YEAR_OF_DIAGNOSIS=2006 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     16       3    0.844  0.0826        0.697        1.000
   24     12       4    0.633  0.1104        0.450        0.891
   36     10       2    0.528  0.1145        0.345        0.807
   48      8       2    0.422  0.1134        0.249        0.715
   60      8       0    0.422  0.1134        0.249        0.715
  120      3       1    0.362  0.1121        0.197        0.664

                YEAR_OF_DIAGNOSIS=2007 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     15       5    0.756  0.0950       0.5912        0.967
   24     10       5    0.504  0.1117       0.3266        0.778
   36      9       1    0.454  0.1114       0.2805        0.734
   48      7       2    0.353  0.1070       0.1948        0.640
   60      4       2    0.242  0.0985       0.1090        0.538
  120      1       1    0.182  0.0906       0.0682        0.483

                YEAR_OF_DIAGNOSIS=2008 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     18       3    0.857  0.0764        0.720        1.000
   24     14       4    0.667  0.1029        0.493        0.902
   36     10       4    0.476  0.1090        0.304        0.746
   48      8       2    0.381  0.1060        0.221        0.657
   60      7       1    0.333  0.1029        0.182        0.610

                YEAR_OF_DIAGNOSIS=2009 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     22       5    0.815  0.0748        0.681        0.975
   24     21       1    0.778  0.0800        0.636        0.952
   36     13       8    0.481  0.0962        0.326        0.712
   48     11       2    0.407  0.0946        0.259        0.642
   60      8       2    0.333  0.0907        0.196        0.568

                YEAR_OF_DIAGNOSIS=2010 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     23       9    0.731  0.0770        0.595        0.899
   24     17       5    0.566  0.0882        0.417        0.768
   36     14       3    0.466  0.0895        0.320        0.679
   48     11       2    0.400  0.0883        0.259        0.616
   60     10       1    0.363  0.0874        0.227        0.582

                YEAR_OF_DIAGNOSIS=2011 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     25       4    0.868  0.0617        0.755        0.997
   24     19       6    0.659  0.0877        0.508        0.856
   36     15       3    0.555  0.0922        0.401        0.769
   48     13       1    0.518  0.0932        0.364        0.737
   60      8       3    0.383  0.0966        0.233        0.628

                YEAR_OF_DIAGNOSIS=2012 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     20       3    0.871  0.0695        0.745        1.000
   24     17       3    0.741  0.0912        0.582        0.943
   36     15       2    0.653  0.0991        0.485        0.880
   48     11       3    0.523  0.1041        0.354        0.772
   60      5       3    0.374  0.1043        0.217        0.646

                YEAR_OF_DIAGNOSIS=2013 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     22       6    0.806  0.0715        0.677        0.959
   24     19       1    0.768  0.0777        0.629        0.936
   36     14       4    0.603  0.0952        0.443        0.822
   48      6       2    0.495  0.1052        0.326        0.751

                YEAR_OF_DIAGNOSIS=2014 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     25       6    0.830  0.0637        0.714        0.965
   24     18       5    0.650  0.0871        0.500        0.845
   36     11       1    0.614  0.0894        0.461        0.816

                YEAR_OF_DIAGNOSIS=2015 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     31      10    0.774  0.0632        0.659        0.908
   24     13       6    0.590  0.0819        0.450        0.775




   
## Univariable Cox Proportional Hazard Model for:  YEAR_OF_DIAGNOSIS

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

  n= 334, number of events= 187 

                          coef exp(coef) se(coef)      z Pr(>|z|)
YEAR_OF_DIAGNOSIS2005  0.00927   1.00931  0.46533  0.020    0.984
YEAR_OF_DIAGNOSIS2006 -0.26811   0.76482  0.42045 -0.638    0.524
YEAR_OF_DIAGNOSIS2007  0.22180   1.24832  0.39468  0.562    0.574
YEAR_OF_DIAGNOSIS2008  0.16927   1.18444  0.38198  0.443    0.658
YEAR_OF_DIAGNOSIS2009  0.01274   1.01283  0.37581  0.034    0.973
YEAR_OF_DIAGNOSIS2010  0.04817   1.04935  0.37366  0.129    0.897
YEAR_OF_DIAGNOSIS2011 -0.15163   0.85931  0.38705 -0.392    0.695
YEAR_OF_DIAGNOSIS2012 -0.20000   0.81873  0.40757 -0.491    0.624
YEAR_OF_DIAGNOSIS2013 -0.16739   0.84587  0.40816 -0.410    0.682
YEAR_OF_DIAGNOSIS2014 -0.29756   0.74262  0.42348 -0.703    0.482
YEAR_OF_DIAGNOSIS2015  0.34220   1.40804  0.38516  0.888    0.374

                      exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005    1.0093     0.9908    0.4054     2.513
YEAR_OF_DIAGNOSIS2006    0.7648     1.3075    0.3355     1.744
YEAR_OF_DIAGNOSIS2007    1.2483     0.8011    0.5759     2.706
YEAR_OF_DIAGNOSIS2008    1.1844     0.8443    0.5602     2.504
YEAR_OF_DIAGNOSIS2009    1.0128     0.9873    0.4849     2.116
YEAR_OF_DIAGNOSIS2010    1.0493     0.9530    0.5045     2.183
YEAR_OF_DIAGNOSIS2011    0.8593     1.1637    0.4024     1.835
YEAR_OF_DIAGNOSIS2012    0.8187     1.2214    0.3683     1.820
YEAR_OF_DIAGNOSIS2013    0.8459     1.1822    0.3801     1.882
YEAR_OF_DIAGNOSIS2014    0.7426     1.3466    0.3238     1.703
YEAR_OF_DIAGNOSIS2015    1.4080     0.7102    0.6619     2.995

Concordance= 0.549  (se = 0.023 )
Rsquare= 0.02   (max possible= 0.997 )
Likelihood ratio test= 6.83  on 11 df,   p=0.8127
Wald test            = 6.91  on 11 df,   p=0.8065
Score (logrank) test = 7.02  on 11 df,   p=0.7978
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  YEAR_OF_DIAGNOSIS
This manual palette can handle a maximum of 10 values. You have supplied 12.

Primary Site

uni_var(test_var = "SITE_TEXT", data_imp = data)
_________________________________________________
   
## SITE_TEXT
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

                                                            n events median 0.95LCL 0.95UCL
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face   1      0     NA      NA      NA
SITE_TEXT=C44.4 Skin of scalp and neck                      1      0     NA      NA      NA
SITE_TEXT=C44.5 Skin of trunk                              13      9   31.1    27.2      NA
SITE_TEXT=C44.6 Skin of upper limb and shoulder             5      5   17.4    10.6      NA
SITE_TEXT=C44.7 Skin of lower limb and hip                  8      2     NA    36.2      NA
SITE_TEXT=C44.8 Overlapping lesion of skin                 54     33   35.2    28.2    53.8
SITE_TEXT=C44.9 Skin, NOS                                 252    138   36.7    28.4    52.0

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

                SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                SITE_TEXT=C44.4 Skin of scalp and neck 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                SITE_TEXT=C44.5 Skin of trunk 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       3    0.755   0.123       0.5486        1.000
   24      7       0    0.755   0.123       0.5486        1.000
   36      2       4    0.324   0.151       0.1299        0.807
   48      1       1    0.162   0.137       0.0308        0.851

                SITE_TEXT=C44.6 Skin of upper limb and shoulder 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       2      0.6   0.219       0.2933            1
   24      2       1      0.4   0.219       0.1367            1
   36      2       0      0.4   0.219       0.1367            1
   48      2       0      0.4   0.219       0.1367            1
   60      1       1      0.2   0.179       0.0346            1

                SITE_TEXT=C44.7 Skin of lower limb and hip 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      7       0    1.000   0.000        1.000            1
   24      7       0    1.000   0.000        1.000            1
   36      6       1    0.857   0.132        0.633            1
   48      3       1    0.714   0.171        0.447            1
   60      3       0    0.714   0.171        0.447            1
  120      1       0    0.714   0.171        0.447            1

                SITE_TEXT=C44.8 Overlapping lesion of skin 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     41      10    0.805  0.0555        0.703        0.921
   24     33       7    0.666  0.0663        0.548        0.809
   36     23       8    0.495  0.0716        0.373        0.658
   48     16       3    0.430  0.0715        0.310        0.595
   60      8       5    0.286  0.0713        0.175        0.466
  120      2       0    0.286  0.0713        0.175        0.466

                SITE_TEXT=C44.9 Skin, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    174      45    0.810  0.0256        0.761        0.861
   24    124      36    0.632  0.0330        0.570        0.700
   36     87      23    0.509  0.0352        0.444        0.583
   48     59      13    0.427  0.0362        0.361        0.504
   60     43       7    0.369  0.0373        0.303        0.450
  120      7      13    0.202  0.0437        0.132        0.309




   
## Univariable Cox Proportional Hazard Model for:  SITE_TEXT
Loglik converged before variable  1,2,3,4,5,6 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

  n= 334, number of events= 187 

                                                     coef  exp(coef)   se(coef)     z Pr(>|z|)
SITE_TEXTC44.4 Skin of scalp and neck          -2.587e-03  9.974e-01  3.826e+03 0.000    1.000
SITE_TEXTC44.5 Skin of trunk                    1.653e+01  1.515e+07  2.740e+03 0.006    0.995
SITE_TEXTC44.6 Skin of upper limb and shoulder  1.663e+01  1.666e+07  2.740e+03 0.006    0.995
SITE_TEXTC44.7 Skin of lower limb and hip       1.480e+01  2.680e+06  2.740e+03 0.005    0.996
SITE_TEXTC44.8 Overlapping lesion of skin       1.604e+01  9.276e+06  2.740e+03 0.006    0.995
SITE_TEXTC44.9 Skin, NOS                        1.606e+01  9.434e+06  2.740e+03 0.006    0.995

                                               exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXTC44.4 Skin of scalp and neck          9.974e-01  1.003e+00         0       Inf
SITE_TEXTC44.5 Skin of trunk                   1.515e+07  6.600e-08         0       Inf
SITE_TEXTC44.6 Skin of upper limb and shoulder 1.666e+07  6.001e-08         0       Inf
SITE_TEXTC44.7 Skin of lower limb and hip      2.680e+06  3.731e-07         0       Inf
SITE_TEXTC44.8 Overlapping lesion of skin      9.276e+06  1.078e-07         0       Inf
SITE_TEXTC44.9 Skin, NOS                       9.434e+06  1.060e-07         0       Inf

Concordance= 0.53  (se = 0.018 )
Rsquare= 0.039   (max possible= 0.997 )
Likelihood ratio test= 13.18  on 6 df,   p=0.04031
Wald test            = 6.7  on 6 df,   p=0.3498
Score (logrank) test = 9.97  on 6 df,   p=0.126
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SITE_TEXT

Histology

#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)

Behavior

uni_var(test_var = "BEHAVIOR", data_imp = data)
_________________________________________________
   
## BEHAVIOR
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ BEHAVIOR, data = data)

      n  events  median 0.95LCL 0.95UCL 
  334.0   187.0    36.5    31.1    44.7 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ BEHAVIOR, data = data)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    236      60    0.808  0.0223        0.766        0.853
   24    175      44    0.649  0.0280        0.597        0.707
   36    122      36    0.509  0.0302        0.453        0.572
   48     83      18    0.428  0.0309        0.371        0.493
   60     57      14    0.349  0.0317        0.292        0.417
  120     10      14    0.224  0.0353        0.164        0.305



   
## Univariable Cox Proportional Hazard Model for:  BEHAVIOR

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  BEHAVIOR

Grade

#uni_var(test_var = "GRADE_F", data_imp = data)

Clinical T Stage

uni_var(test_var = "TNM_CLIN_T", data_imp = data)
_________________________________________________
   
## TNM_CLIN_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_T, data = data)

   13 observations deleted due to missingness 
                 n events median 0.95LCL 0.95UCL
TNM_CLIN_T=N_A   4      3   25.3    2.23      NA
TNM_CLIN_T=c1   19      7   53.8   25.63      NA
TNM_CLIN_T=c2   22     10   34.3   25.89      NA
TNM_CLIN_T=c2B   1      0     NA      NA      NA
TNM_CLIN_T=c3   23     12   30.5   22.01      NA
TNM_CLIN_T=c4  149     76   36.7   28.29    61.4
TNM_CLIN_T=cX  103     74   36.5   30.75    48.0

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_T, data = data)

13 observations deleted due to missingness 
                TNM_CLIN_T=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       1     0.75   0.217        0.426            1
   24      2       1     0.50   0.250        0.188            1

                TNM_CLIN_T=c1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       4    0.759   0.106        0.578        0.997
   24      8       0    0.759   0.106        0.578        0.997
   36      6       1    0.664   0.128        0.455        0.969
   48      5       0    0.664   0.128        0.455        0.969
   60      2       2    0.332   0.178        0.116        0.949

                TNM_CLIN_T=c2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     19       2    0.905  0.0641        0.788        1.000
   24     14       4    0.704  0.1017        0.530        0.934
   36      7       4    0.474  0.1178        0.291        0.771
   48      4       0    0.474  0.1178        0.291        0.771
   60      3       0    0.474  0.1178        0.291        0.771

                TNM_CLIN_T=c2B 
        time       n.risk      n.event     survival      std.err lower 95% CI upper 95% CI 
          12            1            0            1            0            1            1 

                TNM_CLIN_T=c3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     16       1    0.957  0.0425       0.8767        1.000
   24     10       6    0.598  0.1188       0.4050        0.882
   36      7       2    0.478  0.1214       0.2908        0.787
   48      4       1    0.399  0.1246       0.2159        0.736
   60      1       2    0.133  0.1162       0.0239        0.737

                TNM_CLIN_T=c4 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    101      29    0.789  0.0349        0.724        0.861
   24     73      18    0.639  0.0426        0.561        0.728
   36     50      13    0.519  0.0459        0.436        0.617
   48     30       6    0.452  0.0474        0.368        0.555
   60     19       4    0.387  0.0509        0.299        0.500

                TNM_CLIN_T=cX 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     79      19    0.808  0.0396        0.734        0.889
   24     64      15    0.655  0.0480        0.567        0.756
   36     49      15    0.501  0.0505        0.411        0.611
   48     38      10    0.397  0.0496        0.311        0.507
   60     30       6    0.333  0.0480        0.251        0.442
  120     10       8    0.233  0.0454        0.159        0.341




   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_T
Loglik converged before variable  3 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_T, data = data)

  n= 321, number of events= 182 
   (13 observations deleted due to missingness)

                    coef  exp(coef)   se(coef)      z Pr(>|z|)
TNM_CLIN_Tc1  -8.955e-01  4.084e-01  6.916e-01 -1.295    0.195
TNM_CLIN_Tc2  -8.989e-01  4.070e-01  6.592e-01 -1.364    0.173
TNM_CLIN_Tc2B -1.372e+01  1.096e-06  1.390e+03 -0.010    0.992
TNM_CLIN_Tc3  -5.941e-01  5.521e-01  6.466e-01 -0.919    0.358
TNM_CLIN_Tc4  -6.864e-01  5.034e-01  5.900e-01 -1.163    0.245
TNM_CLIN_TcX  -7.241e-01  4.848e-01  5.929e-01 -1.221    0.222

              exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_Tc1  4.084e-01  2.448e+00    0.1053     1.584
TNM_CLIN_Tc2  4.070e-01  2.457e+00    0.1118     1.482
TNM_CLIN_Tc2B 1.096e-06  9.121e+05    0.0000       Inf
TNM_CLIN_Tc3  5.521e-01  1.811e+00    0.1555     1.960
TNM_CLIN_Tc4  5.034e-01  1.987e+00    0.1584     1.600
TNM_CLIN_TcX  4.848e-01  2.063e+00    0.1516     1.550

Concordance= 0.514  (se = 0.022 )
Rsquare= 0.008   (max possible= 0.997 )
Likelihood ratio test= 2.52  on 6 df,   p=0.8666
Wald test            = 2.31  on 6 df,   p=0.8894
Score (logrank) test = 2.62  on 6 df,   p=0.8552
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_T

Clinical N Stage

uni_var(test_var = "TNM_CLIN_N", data_imp = data)
_________________________________________________
   
## TNM_CLIN_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_N, data = data)

   12 observations deleted due to missingness 
                 n events median 0.95LCL 0.95UCL
TNM_CLIN_N=N_A   4      3   25.3    2.23      NA
TNM_CLIN_N=c0  104     50   53.8   28.16    61.4
TNM_CLIN_N=c1   42     24   33.5   21.68      NA
TNM_CLIN_N=c1A   2      1   23.2   23.16      NA
TNM_CLIN_N=c1B   4      2   43.4    5.88      NA
TNM_CLIN_N=c2   10      4   36.7   13.24      NA
TNM_CLIN_N=c2B   2      1   48.2      NA      NA
TNM_CLIN_N=c3   17      9   21.7   10.61      NA
TNM_CLIN_N=cX  137     89   36.5   30.75    44.7

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_N, data = data)

12 observations deleted due to missingness 
                TNM_CLIN_N=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       1     0.75   0.217        0.426            1
   24      2       1     0.50   0.250        0.188            1

                TNM_CLIN_N=c0 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     74      14    0.850  0.0371        0.781        0.926
   24     56      13    0.694  0.0495        0.604        0.798
   36     34      12    0.537  0.0555        0.438        0.657
   48     27       2    0.503  0.0568        0.404        0.628
   60     16       6    0.369  0.0628        0.265        0.516

                TNM_CLIN_N=c1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     28       9    0.768  0.0680        0.646        0.914
   24     20       6    0.591  0.0823        0.450        0.776
   36     15       4    0.473  0.0844        0.333        0.671
   48      9       0    0.473  0.0844        0.333        0.671
   60      5       2    0.368  0.0928        0.224        0.603

                TNM_CLIN_N=c1A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      1       1      0.5   0.354        0.125            1
   36      1       0      0.5   0.354        0.125            1
   48      1       0      0.5   0.354        0.125            1
   60      1       0      0.5   0.354        0.125            1

                TNM_CLIN_N=c1B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       1    0.750   0.217       0.4259            1
   24      2       0    0.750   0.217       0.4259            1
   36      2       0    0.750   0.217       0.4259            1
   48      1       1    0.375   0.286       0.0839            1
   60      1       0    0.375   0.286       0.0839            1

                TNM_CLIN_N=c2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       1      0.9  0.0949        0.732            1
   24      4       2      0.6  0.1844        0.329            1
   36      3       0      0.6  0.1844        0.329            1
   48      1       1      0.4  0.2044        0.147            1
   60      1       0      0.4  0.2044        0.147            1

                TNM_CLIN_N=c2B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0        1       0            1            1
   24      2       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1

                TNM_CLIN_N=c3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       6    0.637   0.119        0.442        0.918
   24      5       2    0.465   0.136        0.262        0.825
   36      2       1    0.310   0.156        0.116        0.830
   48      1       0    0.310   0.156        0.116        0.830

                TNM_CLIN_N=cX 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    101      25    0.809  0.0345        0.744        0.879
   24     79      19    0.653  0.0424        0.575        0.742
   36     60      18    0.503  0.0451        0.422        0.600
   48     39      13    0.387  0.0448        0.308        0.486
   60     30       5    0.334  0.0445        0.257        0.434
  120     10       8    0.234  0.0437        0.162        0.337




   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_N

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_N, data = data)

  n= 322, number of events= 183 
   (12 observations deleted due to missingness)

                 coef exp(coef) se(coef)      z Pr(>|z|)
TNM_CLIN_Nc0  -0.8149    0.4427   0.5961 -1.367    0.172
TNM_CLIN_Nc1  -0.5614    0.5704   0.6138 -0.915    0.360
TNM_CLIN_Nc1A -1.2340    0.2911   1.1571 -1.066    0.286
TNM_CLIN_Nc1B -0.8953    0.4085   0.9148 -0.979    0.328
TNM_CLIN_Nc2  -0.7491    0.4728   0.7646 -0.980    0.327
TNM_CLIN_Nc2B -1.0695    0.3432   1.1555 -0.926    0.355
TNM_CLIN_Nc3  -0.2005    0.8183   0.6673 -0.300    0.764
TNM_CLIN_NcX  -0.7257    0.4840   0.5901 -1.230    0.219

              exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_Nc0     0.4427      2.259   0.13762     1.424
TNM_CLIN_Nc1     0.5704      1.753   0.17128     1.900
TNM_CLIN_Nc1A    0.2911      3.435   0.03014     2.812
TNM_CLIN_Nc1B    0.4085      2.448   0.06800     2.454
TNM_CLIN_Nc2     0.4728      2.115   0.10565     2.116
TNM_CLIN_Nc2B    0.3432      2.914   0.03565     3.304
TNM_CLIN_Nc3     0.8183      1.222   0.22129     3.026
TNM_CLIN_NcX     0.4840      2.066   0.15223     1.539

Concordance= 0.543  (se = 0.022 )
Rsquare= 0.015   (max possible= 0.997 )
Likelihood ratio test= 4.79  on 8 df,   p=0.7801
Wald test            = 5.3  on 8 df,   p=0.7246
Score (logrank) test = 5.46  on 8 df,   p=0.7077
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_N

Clinical M Stage

uni_var(test_var = "TNM_CLIN_M", data_imp = data)
_________________________________________________
   
## TNM_CLIN_M
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_M, data = data)

   22 observations deleted due to missingness 
                 n events median 0.95LCL 0.95UCL
TNM_CLIN_M=N_A   4      3   25.3    2.23      NA
TNM_CLIN_M=c0  281    162   36.5   30.65      47
TNM_CLIN_M=c1   27     13   37.5   30.52      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_M, data = data)

22 observations deleted due to missingness 
                TNM_CLIN_M=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       1     0.75   0.217        0.426            1
   24      2       1     0.50   0.250        0.188            1

                TNM_CLIN_M=c0 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    196      50    0.809  0.0244        0.762        0.858
   24    148      39    0.642  0.0307        0.585        0.705
   36    105      31    0.502  0.0328        0.442        0.571
   48     72      15    0.424  0.0334        0.363        0.494
   60     48      13    0.339  0.0340        0.279        0.413
  120     10      13    0.220  0.0360        0.160        0.303

                TNM_CLIN_M=c1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     22       4    0.849  0.0697        0.723        0.997
   24     16       2    0.759  0.0867        0.607        0.949
   36      9       3    0.598  0.1076        0.420        0.851
   48      5       2    0.465  0.1178        0.283        0.764
   60      3       1    0.372  0.1257        0.192        0.721




   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_M

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_M, data = data)

  n= 312, number of events= 178 
   (22 observations deleted due to missingness)

                coef exp(coef) se(coef)      z Pr(>|z|)
TNM_CLIN_Mc0 -0.7126    0.4904   0.5849 -1.218    0.223
TNM_CLIN_Mc1 -0.8222    0.4394   0.6414 -1.282    0.200

             exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_Mc0    0.4904      2.039    0.1558     1.543
TNM_CLIN_Mc1    0.4394      2.276    0.1250     1.545

Concordance= 0.513  (se = 0.013 )
Rsquare= 0.004   (max possible= 0.997 )
Likelihood ratio test= 1.38  on 2 df,   p=0.5023
Wald test            = 1.67  on 2 df,   p=0.4339
Score (logrank) test = 1.74  on 2 df,   p=0.4193
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_M

Clinical Stage Group

uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
   
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

                          n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=1    5      2     NA   56.64      NA
TNM_CLIN_STAGE_GROUP=1A  12      6   53.8   25.63      NA
TNM_CLIN_STAGE_GROUP=1B  13      7   25.9   16.26      NA
TNM_CLIN_STAGE_GROUP=2    1      1   31.5      NA      NA
TNM_CLIN_STAGE_GROUP=2A   5      0     NA      NA      NA
TNM_CLIN_STAGE_GROUP=2B  14      7   30.9   20.30      NA
TNM_CLIN_STAGE_GROUP=3   13      8   27.4   17.51      NA
TNM_CLIN_STAGE_GROUP=3A  35     18   35.2   25.36      NA
TNM_CLIN_STAGE_GROUP=3B  29     20   22.7   13.86      NA
TNM_CLIN_STAGE_GROUP=4   28     18   39.2   27.79      NA
TNM_CLIN_STAGE_GROUP=4A  35     23   37.4   27.20    57.1
TNM_CLIN_STAGE_GROUP=4A1 46     21   59.4   28.35      NA
TNM_CLIN_STAGE_GROUP=4A2 12      6   21.7    5.52      NA
TNM_CLIN_STAGE_GROUP=4B  30     18   37.5   33.54      NA
TNM_CLIN_STAGE_GROUP=N_A  3      3   16.2    2.23      NA
TNM_CLIN_STAGE_GROUP=99  53     29   47.0   22.24      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

                TNM_CLIN_STAGE_GROUP=1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       0      1.0   0.000        1.000            1
   24      5       0      1.0   0.000        1.000            1
   36      5       0      1.0   0.000        1.000            1
   48      5       0      1.0   0.000        1.000            1
   60      3       2      0.6   0.219        0.293            1
  120      2       0      0.6   0.219        0.293            1

                TNM_CLIN_STAGE_GROUP=1A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       1    0.900  0.0949        0.732        1.000
   24      7       1    0.787  0.1340        0.564        1.000
   36      5       1    0.675  0.1551        0.430        1.000
   48      4       1    0.540  0.1731        0.288        1.000
   60      2       1    0.360  0.1869        0.130        0.996

                TNM_CLIN_STAGE_GROUP=1B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       1    0.909  0.0867       0.7541        1.000
   24      6       3    0.606  0.1541       0.3682        0.998
   36      1       3    0.242  0.1464       0.0742        0.792
   48      1       0    0.242  0.1464       0.0742        0.792
   60      1       0    0.242  0.1464       0.0742        0.792

                TNM_CLIN_STAGE_GROUP=2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1

                TNM_CLIN_STAGE_GROUP=2A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       0        1       0            1            1
   24      4       0        1       0            1            1
   36      4       0        1       0            1            1
   48      3       0        1       0            1            1
   60      3       0        1       0            1            1
  120      1       0        1       0            1            1

                TNM_CLIN_STAGE_GROUP=2B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     11       0     1.00   0.000       1.0000        1.000
   24      6       4     0.60   0.155       0.3617        0.995
   36      4       1     0.50   0.158       0.2690        0.929
   48      2       2     0.25   0.148       0.0784        0.797
   60      1       0     0.25   0.148       0.0784        0.797

                TNM_CLIN_STAGE_GROUP=3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       3    0.750   0.125       0.5410        1.000
   24      6       2    0.571   0.146       0.3461        0.944
   36      4       2    0.381   0.147       0.1789        0.811
   48      4       0    0.381   0.147       0.1789        0.811
   60      2       1    0.254   0.143       0.0845        0.764

                TNM_CLIN_STAGE_GROUP=3A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     24       3    0.903  0.0534       0.8044        1.000
   24     17       6    0.670  0.0911       0.5134        0.875
   36     12       5    0.473  0.0981       0.3151        0.710
   48      9       0    0.473  0.0981       0.3151        0.710
   60      6       1    0.421  0.1003       0.2635        0.671
  120      1       3    0.210  0.0994       0.0832        0.531

                TNM_CLIN_STAGE_GROUP=3B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     19       9    0.679  0.0881        0.527        0.876
   24     12       7    0.429  0.0936        0.280        0.658
   36     10       1    0.393  0.0923        0.248        0.623
   48      9       1    0.354  0.0911        0.214        0.586
   60      6       0    0.354  0.0911        0.214        0.586

                TNM_CLIN_STAGE_GROUP=4 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     25       3    0.893  0.0585        0.785        1.000
   24     20       5    0.714  0.0854        0.565        0.903
   36     13       5    0.527  0.0959        0.369        0.753
   48      8       3    0.390  0.0985        0.238        0.640
   60      8       0    0.390  0.0985        0.238        0.640
  120      2       2    0.244  0.1036        0.106        0.561

                TNM_CLIN_STAGE_GROUP=4A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     25       5    0.847  0.0631        0.732        0.980
   24     19       5    0.671  0.0862        0.522        0.863
   36     14       4    0.523  0.0937        0.369        0.743
   48      8       4    0.367  0.0930        0.223        0.603
   60      4       3    0.220  0.0869        0.102        0.477

                TNM_CLIN_STAGE_GROUP=4A1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     33       6    0.861  0.0527        0.764        0.971
   24     25       5    0.726  0.0712        0.599        0.880
   36     15       6    0.541  0.0842        0.398        0.734
   48      7       1    0.502  0.0866        0.358        0.704
   60      5       2    0.359  0.1057        0.201        0.639

                TNM_CLIN_STAGE_GROUP=4A2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       4    0.667   0.136        0.447        0.995
   24      3       2    0.437   0.165        0.209        0.918
   36      2       0    0.437   0.165        0.209        0.918
   48      1       0    0.437   0.165        0.209        0.918
   60      1       0    0.437   0.165        0.209        0.918

                TNM_CLIN_STAGE_GROUP=4B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     21       7    0.763  0.0785       0.6234        0.933
   24     18       0    0.763  0.0785       0.6234        0.933
   36     13       4    0.590  0.0973       0.4272        0.815
   48      8       4    0.399  0.1028       0.2413        0.661
   60      5       2    0.291  0.0998       0.1488        0.570
  120      1       1    0.218  0.0979       0.0908        0.526

                TNM_CLIN_STAGE_GROUP=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1    0.667   0.272       0.2995            1
   24      1       1    0.333   0.272       0.0673            1

                TNM_CLIN_STAGE_GROUP=99 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     30      17    0.664  0.0667        0.546        0.809
   24     25       3    0.595  0.0708        0.471        0.751
   36     20       2    0.544  0.0734        0.417        0.708
   48     14       2    0.482  0.0771        0.352        0.660
   60     10       2    0.407  0.0816        0.275        0.603
  120      3       2    0.279  0.0942        0.144        0.541




   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_STAGE_GROUP
Loglik converged before variable  4 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

  n= 334, number of events= 187 

                              coef  exp(coef)   se(coef)      z Pr(>|z|)   
TNM_CLIN_STAGE_GROUP1A   1.087e+00  2.965e+00  8.191e-01  1.327  0.18453   
TNM_CLIN_STAGE_GROUP1B   1.497e+00  4.466e+00  8.053e-01  1.858  0.06311 . 
TNM_CLIN_STAGE_GROUP2    1.741e+00  5.702e+00  1.229e+00  1.417  0.15660   
TNM_CLIN_STAGE_GROUP2A  -1.490e+01  3.394e-07  1.378e+03 -0.011  0.99138   
TNM_CLIN_STAGE_GROUP2B   1.289e+00  3.629e+00  8.061e-01  1.599  0.10981   
TNM_CLIN_STAGE_GROUP3    1.354e+00  3.874e+00  7.938e-01  1.706  0.08802 . 
TNM_CLIN_STAGE_GROUP3A   1.180e+00  3.254e+00  7.475e-01  1.579  0.11444   
TNM_CLIN_STAGE_GROUP3B   1.456e+00  4.287e+00  7.443e-01  1.956  0.05050 . 
TNM_CLIN_STAGE_GROUP4    1.024e+00  2.785e+00  7.468e-01  1.372  0.17019   
TNM_CLIN_STAGE_GROUP4A   1.390e+00  4.014e+00  7.405e-01  1.877  0.06054 . 
TNM_CLIN_STAGE_GROUP4A1  1.118e+00  3.059e+00  7.440e-01  1.503  0.13287   
TNM_CLIN_STAGE_GROUP4A2  1.595e+00  4.926e+00  8.207e-01  1.943  0.05202 . 
TNM_CLIN_STAGE_GROUP4B   1.200e+00  3.320e+00  7.472e-01  1.606  0.10829   
TNM_CLIN_STAGE_GROUPN_A  2.392e+00  1.094e+01  9.183e-01  2.605  0.00919 **
TNM_CLIN_STAGE_GROUP99   1.189e+00  3.285e+00  7.325e-01  1.624  0.10444   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                        exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1A  2.965e+00  3.373e-01    0.5954     14.76
TNM_CLIN_STAGE_GROUP1B  4.466e+00  2.239e-01    0.9215     21.64
TNM_CLIN_STAGE_GROUP2   5.702e+00  1.754e-01    0.5129     63.40
TNM_CLIN_STAGE_GROUP2A  3.394e-07  2.946e+06    0.0000       Inf
TNM_CLIN_STAGE_GROUP2B  3.629e+00  2.756e-01    0.7476     17.62
TNM_CLIN_STAGE_GROUP3   3.874e+00  2.582e-01    0.8174     18.36
TNM_CLIN_STAGE_GROUP3A  3.254e+00  3.073e-01    0.7519     14.09
TNM_CLIN_STAGE_GROUP3B  4.287e+00  2.333e-01    0.9969     18.44
TNM_CLIN_STAGE_GROUP4   2.785e+00  3.590e-01    0.6444     12.04
TNM_CLIN_STAGE_GROUP4A  4.014e+00  2.491e-01    0.9403     17.14
TNM_CLIN_STAGE_GROUP4A1 3.059e+00  3.269e-01    0.7117     13.15
TNM_CLIN_STAGE_GROUP4A2 4.926e+00  2.030e-01    0.9862     24.61
TNM_CLIN_STAGE_GROUP4B  3.320e+00  3.012e-01    0.7676     14.36
TNM_CLIN_STAGE_GROUPN_A 1.094e+01  9.143e-02    1.8082     66.16
TNM_CLIN_STAGE_GROUP99  3.285e+00  3.044e-01    0.7817     13.81

Concordance= 0.577  (se = 0.023 )
Rsquare= 0.063   (max possible= 0.997 )
Likelihood ratio test= 21.91  on 15 df,   p=0.1102
Wald test            = 11.26  on 15 df,   p=0.734
Score (logrank) test = 17.77  on 15 df,   p=0.2749
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 16 rows containing missing values (geom_text).Removed 16 rows containing missing values (geom_text).Removed 16 rows containing missing values (geom_text).Removed 16 rows containing missing values (geom_text).Removed 16 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 16.

Pathologic T Stage

uni_var(test_var = "TNM_PATH_T", data_imp = data)
_________________________________________________
   
## TNM_PATH_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_T, data = data)

   120 observations deleted due to missingness 
                 n events median 0.95LCL 0.95UCL
TNM_PATH_T=N_A   5      3   34.4   16.23      NA
TNM_PATH_T=p1    5      3   53.8    6.64      NA
TNM_PATH_T=p2   12      4     NA   26.64      NA
TNM_PATH_T=p2B   2      0     NA      NA      NA
TNM_PATH_T=p3   10      6   43.4   18.37      NA
TNM_PATH_T=p4   64     30   37.5   30.88      NA
TNM_PATH_T=pX  116     86   34.8   28.22      43

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_T, data = data)

120 observations deleted due to missingness 
                TNM_PATH_T=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       1      0.8   0.179        0.516            1
   24      2       1      0.6   0.219        0.293            1

                TNM_PATH_T=p1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       2      0.6   0.219       0.2933            1
   24      2       0      0.6   0.219       0.2933            1
   36      2       0      0.6   0.219       0.2933            1
   48      2       0      0.6   0.219       0.2933            1
   60      1       1      0.3   0.239       0.0631            1

                TNM_PATH_T=p2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       1    0.909  0.0867        0.754            1
   24      8       1    0.808  0.1225        0.600            1
   36      4       2    0.577  0.1634        0.331            1
   48      2       0    0.577  0.1634        0.331            1
   60      1       0    0.577  0.1634        0.331            1

                TNM_PATH_T=p2B 
        time       n.risk      n.event     survival      std.err lower 95% CI upper 95% CI 
          12            1            0            1            0            1            1 

                TNM_PATH_T=p3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       1    0.900  0.0949       0.7320        1.000
   24      5       3    0.562  0.1651       0.3165        1.000
   36      5       0    0.562  0.1651       0.3165        1.000
   48      3       1    0.450  0.1660       0.2184        0.927
   60      1       1    0.225  0.1795       0.0471        1.000

                TNM_PATH_T=p4 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     41      13    0.771  0.0560        0.669        0.889
   24     34       4    0.693  0.0625        0.581        0.827
   36     26       5    0.587  0.0687        0.466        0.738
   48     16       4    0.492  0.0721        0.369        0.656
   60      9       2    0.423  0.0771        0.296        0.605

                TNM_PATH_T=pX 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     89      22    0.803  0.0376        0.733        0.880
   24     71      18    0.641  0.0455        0.558        0.736
   36     52      19    0.469  0.0474        0.385        0.572
   48     41      10    0.378  0.0462        0.297        0.480
   60     34       5    0.331  0.0450        0.253        0.431
  120     10      11    0.214  0.0411        0.147        0.312




   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_T
Loglik converged before variable  3 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_T, data = data)

  n= 214, number of events= 132 
   (120 observations deleted due to missingness)

                    coef  exp(coef)   se(coef)      z Pr(>|z|)
TNM_PATH_Tp1  -3.052e-01  7.370e-01  8.196e-01 -0.372    0.710
TNM_PATH_Tp2  -9.968e-01  3.690e-01  7.651e-01 -1.303    0.193
TNM_PATH_Tp2B -1.555e+01  1.765e-07  2.757e+03 -0.006    0.995
TNM_PATH_Tp3  -4.857e-01  6.153e-01  7.099e-01 -0.684    0.494
TNM_PATH_Tp4  -6.364e-01  5.292e-01  6.082e-01 -1.046    0.295
TNM_PATH_TpX  -4.613e-01  6.304e-01  5.921e-01 -0.779    0.436

              exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_Tp1  7.370e-01  1.357e+00   0.14785     3.674
TNM_PATH_Tp2  3.690e-01  2.710e+00   0.08239     1.653
TNM_PATH_Tp2B 1.765e-07  5.666e+06   0.00000       Inf
TNM_PATH_Tp3  6.153e-01  1.625e+00   0.15303     2.474
TNM_PATH_Tp4  5.292e-01  1.890e+00   0.16068     1.743
TNM_PATH_TpX  6.304e-01  1.586e+00   0.19753     2.012

Concordance= 0.535  (se = 0.025 )
Rsquare= 0.016   (max possible= 0.997 )
Likelihood ratio test= 3.46  on 6 df,   p=0.7486
Wald test            = 2.52  on 6 df,   p=0.8661
Score (logrank) test = 3.03  on 6 df,   p=0.8054
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_T

Pathologic N Stage

uni_var(test_var = "TNM_PATH_N", data_imp = data)
_________________________________________________
   
## TNM_PATH_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_N, data = data)

   108 observations deleted due to missingness 
                 n events median 0.95LCL 0.95UCL
TNM_PATH_N=N_A   5      3   34.4   16.23      NA
TNM_PATH_N=p0   23      9   81.6   53.78      NA
TNM_PATH_N=p1    9      5   48.7   21.68      NA
TNM_PATH_N=p1A   1      0     NA      NA      NA
TNM_PATH_N=p1B   2      1   43.4      NA      NA
TNM_PATH_N=p2    5      2   36.7   36.67      NA
TNM_PATH_N=p3    3      2   21.7    4.11      NA
TNM_PATH_N=pX  178    112   35.2   30.65    44.7

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_N, data = data)

108 observations deleted due to missingness 
                TNM_PATH_N=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       1      0.8   0.179        0.516            1
   24      2       1      0.6   0.219        0.293            1

                TNM_PATH_N=p0 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     17       2    0.905  0.0641        0.788        1.000
   24     13       2    0.792  0.0935        0.628        0.998
   36     11       1    0.726  0.1064        0.544        0.967
   48     10       0    0.726  0.1064        0.544        0.967
   60      6       3    0.508  0.1289        0.309        0.835

                TNM_PATH_N=p1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       2    0.762   0.148        0.521            1
   24      4       1    0.610   0.181        0.341            1
   36      3       0    0.610   0.181        0.341            1
   48      3       0    0.610   0.181        0.341            1
   60      2       1    0.406   0.205        0.151            1

                TNM_PATH_N=p1A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                TNM_PATH_N=p1B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1

                TNM_PATH_N=p2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       1      0.8   0.179        0.516            1
   24      3       0      0.8   0.179        0.516            1
   36      2       0      0.8   0.179        0.516            1

                TNM_PATH_N=p3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1    0.667   0.272       0.2995            1
   24      1       1    0.333   0.272       0.0673            1
   36      1       0    0.333   0.272       0.0673            1

                TNM_PATH_N=pX 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    131      32    0.809  0.0304        0.752        0.871
   24    104      25    0.653  0.0373        0.584        0.730
   36     75      25    0.493  0.0396        0.422        0.577
   48     54      13    0.404  0.0394        0.333        0.489
   60     40       5    0.362  0.0396        0.292        0.449
  120     10      11    0.240  0.0408        0.172        0.335




   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_N
Loglik converged before variable  3 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_N, data = data)

  n= 226, number of events= 134 
   (108 observations deleted due to missingness)

                    coef  exp(coef)   se(coef)      z Pr(>|z|)
TNM_PATH_Np0  -1.002e+00  3.671e-01  6.705e-01 -1.495    0.135
TNM_PATH_Np1  -4.561e-01  6.338e-01  7.331e-01 -0.622    0.534
TNM_PATH_Np1A -1.561e+01  1.662e-07  1.672e+03 -0.009    0.993
TNM_PATH_Np1B -6.287e-01  5.333e-01  1.156e+00 -0.544    0.587
TNM_PATH_Np2  -6.716e-01  5.109e-01  9.140e-01 -0.735    0.462
TNM_PATH_Np3   5.693e-02  1.059e+00  9.135e-01  0.062    0.950
TNM_PATH_NpX  -5.482e-01  5.780e-01  5.889e-01 -0.931    0.352

              exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_Np0  3.671e-01  2.724e+00   0.09865     1.366
TNM_PATH_Np1  6.338e-01  1.578e+00   0.15062     2.667
TNM_PATH_Np1A 1.662e-07  6.018e+06   0.00000       Inf
TNM_PATH_Np1B 5.333e-01  1.875e+00   0.05532     5.140
TNM_PATH_Np2  5.109e-01  1.957e+00   0.08519     3.064
TNM_PATH_Np3  1.059e+00  9.447e-01   0.17665     6.343
TNM_PATH_NpX  5.780e-01  1.730e+00   0.18223     1.833

Concordance= 0.539  (se = 0.019 )
Rsquare= 0.026   (max possible= 0.996 )
Likelihood ratio test= 5.92  on 7 df,   p=0.5489
Wald test            = 3.52  on 7 df,   p=0.8328
Score (logrank) test = 4.86  on 7 df,   p=0.677
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 8 rows containing missing values (geom_text).Removed 8 rows containing missing values (geom_text).Removed 8 rows containing missing values (geom_text).Removed 8 rows containing missing values (geom_text).Removed 8 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_N

Pathologic M Stage

uni_var(test_var = "TNM_PATH_M", data_imp = data)
_________________________________________________
   
## TNM_PATH_M
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_M, data = data)

   198 observations deleted due to missingness 
                 n events median 0.95LCL 0.95UCL
TNM_PATH_M=N_A   5      3   34.4    16.2      NA
TNM_PATH_M=p1   14      6   48.7    37.5      NA
TNM_PATH_M=pX  117     87   35.0    28.2    44.7

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_M, data = data)

198 observations deleted due to missingness 
                TNM_PATH_M=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       1      0.8   0.179        0.516            1
   24      2       1      0.6   0.219        0.293            1

                TNM_PATH_M=p1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     11       3    0.786   0.110        0.598            1
   24      8       0    0.786   0.110        0.598            1
   36      6       0    0.786   0.110        0.598            1
   48      4       1    0.655   0.150        0.417            1
   60      3       1    0.491   0.181        0.238            1

                TNM_PATH_M=pX 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     90      22    0.805  0.0373        0.735        0.882
   24     72      18    0.644  0.0452        0.561        0.739
   36     53      19    0.474  0.0472        0.390        0.576
   48     42      10    0.383  0.0461        0.303        0.485
   60     34       6    0.327  0.0447        0.251        0.428
  120     10      11    0.212  0.0408        0.145        0.309




   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_M

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_M, data = data)

  n= 136, number of events= 96 
   (198 observations deleted due to missingness)

                coef exp(coef) se(coef)      z Pr(>|z|)
TNM_PATH_Mp1 -0.8406    0.4315   0.7109 -1.182    0.237
TNM_PATH_MpX -0.5011    0.6058   0.5940 -0.844    0.399

             exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_Mp1    0.4315      2.318    0.1071     1.738
TNM_PATH_MpX    0.6058      1.651    0.1891     1.941

Concordance= 0.521  (se = 0.019 )
Rsquare= 0.01   (max possible= 0.997 )
Likelihood ratio test= 1.39  on 2 df,   p=0.4979
Wald test            = 1.43  on 2 df,   p=0.4891
Score (logrank) test = 1.46  on 2 df,   p=0.4821
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_M

Pathologic Stage Group

uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
   
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

   47 observations deleted due to missingness 
                           n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=1     3      1  52.04   52.04      NA
TNM_PATH_STAGE_GROUP=1A    2      2  29.71    5.65      NA
TNM_PATH_STAGE_GROUP=1B    5      1     NA    8.54      NA
TNM_PATH_STAGE_GROUP=2A    1      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=2B    4      3  40.42   18.37      NA
TNM_PATH_STAGE_GROUP=3     3      2   5.06    3.22      NA
TNM_PATH_STAGE_GROUP=3A    6      3  32.82   20.99      NA
TNM_PATH_STAGE_GROUP=3B    9      5  33.31   21.68      NA
TNM_PATH_STAGE_GROUP=4    10      4     NA   32.46      NA
TNM_PATH_STAGE_GROUP=4A    5      4  54.41    8.15      NA
TNM_PATH_STAGE_GROUP=4B   18     11  36.67   33.54      NA
TNM_PATH_STAGE_GROUP=N_A   3      3  16.23    2.23      NA
TNM_PATH_STAGE_GROUP=99  218    124  35.22   28.35      48

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

47 observations deleted due to missingness 
                TNM_PATH_STAGE_GROUP=1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      2       0      1.0   0.000        1.000            1
   36      2       0      1.0   0.000        1.000            1
   48      2       0      1.0   0.000        1.000            1
   60      1       1      0.5   0.354        0.125            1

                TNM_PATH_STAGE_GROUP=1A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       1      0.5   0.354        0.125            1
   24      1       0      0.5   0.354        0.125            1
   36      1       0      0.5   0.354        0.125            1
   48      1       0      0.5   0.354        0.125            1

                TNM_PATH_STAGE_GROUP=1B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1     0.75   0.217        0.426            1
   24      1       0     0.75   0.217        0.426            1
   36      1       0     0.75   0.217        0.426            1
   48      1       0     0.75   0.217        0.426            1
   60      1       0     0.75   0.217        0.426            1

                TNM_PATH_STAGE_GROUP=2A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                TNM_PATH_STAGE_GROUP=2B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0     1.00   0.000       1.0000            1
   24      3       1     0.75   0.217       0.4259            1
   36      3       0     0.75   0.217       0.4259            1
   48      1       2     0.25   0.217       0.0458            1
   60      1       0     0.25   0.217       0.0458            1

                TNM_PATH_STAGE_GROUP=3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       2    0.333   0.272       0.0673            1
   24      1       0    0.333   0.272       0.0673            1
   36      1       0    0.333   0.272       0.0673            1
   48      1       0    0.333   0.272       0.0673            1
   60      1       0    0.333   0.272       0.0673            1

                TNM_PATH_STAGE_GROUP=3A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0    1.000   0.000       1.0000            1
   24      2       1    0.667   0.272       0.2995            1
   36      1       1    0.333   0.272       0.0673            1
   48      1       0    0.333   0.272       0.0673            1
   60      1       0    0.333   0.272       0.0673            1

                TNM_PATH_STAGE_GROUP=3B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       2    0.750   0.153        0.503        1.000
   24      5       1    0.625   0.171        0.365        1.000
   36      4       1    0.500   0.177        0.250        1.000
   48      3       1    0.375   0.171        0.153        0.917
   60      3       0    0.375   0.171        0.153        0.917
  120      1       0    0.375   0.171        0.153        0.917

                TNM_PATH_STAGE_GROUP=4 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       0      1.0  0.0000        1.000        1.000
   24      9       1      0.9  0.0949        0.732        1.000
   36      7       2      0.7  0.1449        0.467        1.000
   48      5       1      0.6  0.1549        0.362        0.995
   60      5       0      0.6  0.1549        0.362        0.995
  120      1       0      0.6  0.1549        0.362        0.995

                TNM_PATH_STAGE_GROUP=4A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       2      0.6   0.219       0.2933            1
   24      2       0      0.6   0.219       0.2933            1
   36      2       0      0.6   0.219       0.2933            1
   48      2       0      0.6   0.219       0.2933            1
   60      1       1      0.3   0.239       0.0631            1

                TNM_PATH_STAGE_GROUP=4B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     14       3    0.826  0.0913       0.6655        1.000
   24     11       0    0.826  0.0913       0.6655        1.000
   36      6       3    0.572  0.1390       0.3556        0.921
   48      4       2    0.382  0.1440       0.1822        0.799
   60      2       2    0.191  0.1195       0.0559        0.651

                TNM_PATH_STAGE_GROUP=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1    0.667   0.272       0.2995            1
   24      1       1    0.333   0.272       0.0673            1

                TNM_PATH_STAGE_GROUP=99 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    156      40    0.804  0.0278        0.752        0.861
   24    114      31    0.637  0.0347        0.572        0.708
   36     80      24    0.497  0.0371        0.429        0.575
   48     55      11    0.422  0.0378        0.354        0.503
   60     37       7    0.362  0.0387        0.293        0.446
  120      8      10    0.222  0.0440        0.151        0.328




   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_STAGE_GROUP
Loglik converged before variable  3 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

  n= 287, number of events= 163 
   (47 observations deleted due to missingness)

                              coef  exp(coef)   se(coef)      z Pr(>|z|)  
TNM_PATH_STAGE_GROUP1A   1.564e+00  4.779e+00  1.226e+00  1.276   0.2020  
TNM_PATH_STAGE_GROUP1B   1.374e-01  1.147e+00  1.415e+00  0.097   0.9227  
TNM_PATH_STAGE_GROUP2A  -1.420e+01  6.836e-07  1.696e+03 -0.008   0.9933  
TNM_PATH_STAGE_GROUP2B   9.202e-01  2.510e+00  1.156e+00  0.796   0.4260  
TNM_PATH_STAGE_GROUP3    1.301e+00  3.674e+00  1.226e+00  1.062   0.2884  
TNM_PATH_STAGE_GROUP3A   1.061e+00  2.890e+00  1.156e+00  0.918   0.3586  
TNM_PATH_STAGE_GROUP3B   7.253e-01  2.065e+00  1.096e+00  0.662   0.5082  
TNM_PATH_STAGE_GROUP4   -2.263e-02  9.776e-01  1.118e+00 -0.020   0.9839  
TNM_PATH_STAGE_GROUP4A   1.394e+00  4.029e+00  1.119e+00  1.245   0.2130  
TNM_PATH_STAGE_GROUP4B   1.019e+00  2.771e+00  1.046e+00  0.975   0.3298  
TNM_PATH_STAGE_GROUPN_A  2.095e+00  8.129e+00  1.158e+00  1.810   0.0703 .
TNM_PATH_STAGE_GROUP99   9.081e-01  2.480e+00  1.005e+00  0.904   0.3661  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                        exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1A  4.779e+00  2.093e-01   0.43222    52.833
TNM_PATH_STAGE_GROUP1B  1.147e+00  8.716e-01   0.07163    18.376
TNM_PATH_STAGE_GROUP2A  6.836e-07  1.463e+06   0.00000       Inf
TNM_PATH_STAGE_GROUP2B  2.510e+00  3.985e-01   0.26041    24.186
TNM_PATH_STAGE_GROUP3   3.674e+00  2.722e-01   0.33244    40.603
TNM_PATH_STAGE_GROUP3A  2.890e+00  3.460e-01   0.29976    27.865
TNM_PATH_STAGE_GROUP3B  2.065e+00  4.842e-01   0.24087    17.711
TNM_PATH_STAGE_GROUP4   9.776e-01  1.023e+00   0.10922     8.751
TNM_PATH_STAGE_GROUP4A  4.029e+00  2.482e-01   0.44941    36.127
TNM_PATH_STAGE_GROUP4B  2.771e+00  3.609e-01   0.35675    21.526
TNM_PATH_STAGE_GROUPN_A 8.129e+00  1.230e-01   0.84034    78.635
TNM_PATH_STAGE_GROUP99  2.480e+00  4.033e-01   0.34602    17.769

Concordance= 0.537  (se = 0.019 )
Rsquare= 0.048   (max possible= 0.996 )
Likelihood ratio test= 14.09  on 12 df,   p=0.2951
Wald test            = 11.38  on 12 df,   p=0.4963
Score (logrank) test = 13.79  on 12 df,   p=0.3145
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 13.

Margins

uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
   
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

                            n events median 0.95LCL 0.95UCL
MARGINS=No Residual         3      1  17.51   17.51      NA
MARGINS=Residual, NOS       2      1   9.69    9.69      NA
MARGINS=Macroscopic Resid   1      0     NA      NA      NA
MARGINS=Not evaluable      12      5  74.22   40.25      NA
MARGINS=No surg           301    172  35.22   30.65      43
MARGINS=Unknown            15      8  54.41    5.88      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

                MARGINS=No Residual 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      1       1      0.5   0.354        0.125            1

                MARGINS=Residual, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       1      0.5   0.354        0.125            1
   24      1       0      0.5   0.354        0.125            1
   36      1       0      0.5   0.354        0.125            1
   48      1       0      0.5   0.354        0.125            1
   60      1       0      0.5   0.354        0.125            1

                MARGINS=Macroscopic Resid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                MARGINS=Not evaluable 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       1    0.909  0.0867        0.754            1
   24      9       1    0.818  0.1163        0.619            1
   36      6       0    0.818  0.1163        0.619            1
   48      5       1    0.682  0.1578        0.433            1
   60      3       1    0.511  0.1892        0.248            1

                MARGINS=No surg 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    214      53    0.813  0.0233        0.768        0.860
   24    157      42    0.645  0.0296        0.589        0.705
   36    110      35    0.496  0.0317        0.438        0.562
   48     73      17    0.413  0.0323        0.354        0.481
   60     51      11    0.345  0.0329        0.286        0.416
  120     10      13    0.220  0.0361        0.159        0.303

                MARGINS=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       5    0.629   0.133       0.4158        0.950
   24      6       0    0.629   0.133       0.4158        0.950
   36      4       1    0.503   0.155       0.2753        0.919
   48      3       0    0.503   0.155       0.2753        0.919
   60      1       2    0.168   0.146       0.0303        0.927




   
## Univariable Cox Proportional Hazard Model for:  MARGINS
Loglik converged before variable  2 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

  n= 334, number of events= 187 

                               coef  exp(coef)   se(coef)      z Pr(>|z|)
MARGINSResidual, NOS     -3.903e-01  6.768e-01  1.417e+00 -0.275    0.783
MARGINSMacroscopic Resid -1.503e+01  2.979e-07  1.643e+03 -0.009    0.993
MARGINSNot evaluable     -5.288e-01  5.893e-01  1.097e+00 -0.482    0.630
MARGINSNo surg            1.074e-02  1.011e+00  1.004e+00  0.011    0.991
MARGINSUnknown            2.566e-01  1.293e+00  1.062e+00  0.242    0.809

                         exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS     6.768e-01  1.477e+00   0.04212    10.877
MARGINSMacroscopic Resid 2.979e-07  3.356e+06   0.00000       Inf
MARGINSNot evaluable     5.893e-01  1.697e+00   0.06864     5.060
MARGINSNo surg           1.011e+00  9.893e-01   0.14123     7.235
MARGINSUnknown           1.293e+00  7.736e-01   0.16134    10.355

Concordance= 0.521  (se = 0.012 )
Rsquare= 0.014   (max possible= 0.997 )
Likelihood ratio test= 4.82  on 5 df,   p=0.4387
Wald test            = 2.09  on 5 df,   p=0.8366
Score (logrank) test = 3.39  on 5 df,   p=0.6406
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  MARGINS

Margins Yes/No

#uni_var(test_var = "MARGINS_YN", data_imp = data)

30 Day Readmission

uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
   
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

                                             n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 328    183  36.67   31.54      47
READM_HOSP_30_DAYS_F=Plan_Readmit_Same       1      1   3.38      NA      NA
READM_HOSP_30_DAYS_F=9                       5      3  21.16    6.44      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

                READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    234      57    0.815  0.0222        0.773        0.860
   24    173      44    0.653  0.0282        0.600        0.711
   36    122      35    0.516  0.0304        0.459        0.579
   48     83      18    0.433  0.0312        0.376        0.499
   60     57      14    0.354  0.0320        0.296        0.422
  120     10      14    0.227  0.0357        0.167        0.309

                READM_HOSP_30_DAYS_F=Plan_Readmit_Same 
     time n.risk n.event survival std.err lower 95% CI upper 95% CI

                READM_HOSP_30_DAYS_F=9 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       2      0.5    0.25        0.188            1
   24      2       0      0.5    0.25        0.188            1




   
## Univariable Cox Proportional Hazard Model for:  READM_HOSP_30_DAYS_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

  n= 334, number of events= 187 

                                         coef exp(coef) se(coef)     z Pr(>|z|)   
READM_HOSP_30_DAYS_FPlan_Readmit_Same  3.1476   23.2796   1.0352 3.040  0.00236 **
READM_HOSP_30_DAYS_F9                  0.8348    2.3045   0.5841 1.429  0.15293   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                      exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_FPlan_Readmit_Same    23.280    0.04296    3.0604    177.08
READM_HOSP_30_DAYS_F9                     2.304    0.43394    0.7335      7.24

Concordance= 0.51  (se = 0.004 )
Rsquare= 0.017   (max possible= 0.997 )
Likelihood ratio test= 5.88  on 2 df,   p=0.05296
Wald test            = 11.15  on 2 df,   p=0.003793
Score (logrank) test = 21.69  on 2 df,   p=1.948e-05
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  READM_HOSP_30_DAYS_F

Radiation Type

uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
   
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

                                     n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None           316    174   37.5    33.5    48.2
RX_SUMM_RADIATION_F=Beam Radiation  18     13   21.7    20.2      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

                RX_SUMM_RADIATION_F=None 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    223      56    0.811  0.0228        0.767        0.857
   24    170      37    0.669  0.0284        0.616        0.727
   36    119      34    0.529  0.0310        0.471        0.593
   48     80      18    0.442  0.0320        0.383        0.509
   60     55      14    0.358  0.0329        0.299        0.429
  120     10      14    0.226  0.0365        0.165        0.310

                RX_SUMM_RADIATION_F=Beam Radiation 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     13       4    0.774  0.0997       0.6011        0.996
   24      5       7    0.327  0.1183       0.1612        0.665
   36      3       2    0.196  0.1009       0.0718        0.538
   48      3       0    0.196  0.1009       0.0718        0.538
   60      2       0    0.196  0.1009       0.0718        0.538




   
## Univariable Cox Proportional Hazard Model for:  RX_SUMM_RADIATION_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

  n= 334, number of events= 187 

                                    coef exp(coef) se(coef)     z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation 0.4717    1.6028   0.2888 1.633    0.102

                                  exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation     1.603     0.6239      0.91     2.823

Concordance= 0.513  (se = 0.009 )
Rsquare= 0.007   (max possible= 0.997 )
Likelihood ratio test= 2.34  on 1 df,   p=0.126
Wald test            = 2.67  on 1 df,   p=0.1024
Score (logrank) test = 2.72  on 1 df,   p=0.09923
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RX_SUMM_RADIATION_F

Lymphovascular Invasion

#uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)

Endoscopic/Robotic

uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
   
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

   117 observations deleted due to missingness 
                                        n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg      203     95  37.42    28.4    53.8
RX_HOSP_SURG_APPR_2010_F=Endo_Lap       1      0     NA      NA      NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown  12      4  74.22    34.4      NA
RX_HOSP_SURG_APPR_2010_F=Unknown        1      1   5.88      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

117 observations deleted due to missingness 
                RX_HOSP_SURG_APPR_2010_F=No_Surg 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    136      36    0.807  0.0290        0.752        0.866
   24     95      26    0.640  0.0372        0.572        0.718
   36     64      16    0.525  0.0402        0.452        0.610
   48     36       8    0.455  0.0419        0.380        0.545
   60     20       7    0.350  0.0478        0.268        0.458

                RX_HOSP_SURG_APPR_2010_F=Endo_Lap 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1

                RX_HOSP_SURG_APPR_2010_F=Open_Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       1    0.900  0.0949        0.732            1
   24      7       0    0.900  0.0949        0.732            1
   36      5       1    0.750  0.1581        0.496            1
   48      5       0    0.750  0.1581        0.496            1
   60      3       1    0.562  0.2011        0.279            1

                RX_HOSP_SURG_APPR_2010_F=Unknown 
     time n.risk n.event survival std.err lower 95% CI upper 95% CI




   
## Univariable Cox Proportional Hazard Model for:  RX_HOSP_SURG_APPR_2010_F
Loglik converged before variable  1 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

  n= 217, number of events= 100 
   (117 observations deleted due to missingness)

                                           coef  exp(coef)   se(coef)      z Pr(>|z|)  
RX_HOSP_SURG_APPR_2010_FEndo_Lap     -1.530e+01  2.269e-07  2.688e+03 -0.006   0.9955  
RX_HOSP_SURG_APPR_2010_FOpen_Unknown -6.571e-01  5.184e-01  5.121e-01 -1.283   0.1995  
RX_HOSP_SURG_APPR_2010_FUnknown       2.433e+00  1.140e+01  1.029e+00  2.364   0.0181 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                     exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FEndo_Lap     2.269e-07  4.407e+06     0.000       Inf
RX_HOSP_SURG_APPR_2010_FOpen_Unknown 5.184e-01  1.929e+00     0.190     1.414
RX_HOSP_SURG_APPR_2010_FUnknown      1.140e+01  8.774e-02     1.516    85.668

Concordance= 0.531  (se = 0.014 )
Rsquare= 0.028   (max possible= 0.986 )
Likelihood ratio test= 6.25  on 3 df,   p=0.1001
Wald test            = 7.33  on 3 df,   p=0.06221
Score (logrank) test = 11.59  on 3 df,   p=0.00893
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RX_HOSP_SURG_APPR_2010_F

Surgery Radiation Sequence

uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
   
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

                            n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone    32     14  56.64   40.25      NA
SURG_RAD_SEQ=Rad Alone     18     13  21.68   20.24      NA
SURG_RAD_SEQ=No Treatment 282    158  36.67   32.46      47
SURG_RAD_SEQ=Other          2      2   6.16    5.88      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

                SURG_RAD_SEQ=Surg Alone 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     22       6    0.793  0.0754        0.658        0.956
   24     18       2    0.721  0.0840        0.574        0.906
   36     12       1    0.666  0.0941        0.505        0.878
   48     10       1    0.610  0.1013        0.441        0.845
   60      6       3    0.407  0.1173        0.231        0.716

                SURG_RAD_SEQ=Rad Alone 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     13       4    0.774  0.0997       0.6011        0.996
   24      5       7    0.327  0.1183       0.1612        0.665
   36      3       2    0.196  0.1009       0.0718        0.538
   48      3       0    0.196  0.1009       0.0718        0.538
   60      2       0    0.196  0.1009       0.0718        0.538

                SURG_RAD_SEQ=No Treatment 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    201      48    0.819  0.0237        0.774        0.867
   24    152      35    0.669  0.0301        0.612        0.730
   36    107      33    0.519  0.0328        0.458        0.587
   48     70      17    0.429  0.0337        0.367        0.500
   60     49      11    0.355  0.0345        0.294        0.430
  120     10      13    0.222  0.0376        0.160        0.310

                SURG_RAD_SEQ=Other 
     time n.risk n.event survival std.err lower 95% CI upper 95% CI




   
## Univariable Cox Proportional Hazard Model for:  SURG_RAD_SEQ

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

  n= 334, number of events= 187 

                            coef exp(coef) se(coef)     z Pr(>|z|)    
SURG_RAD_SEQRad Alone     0.7079    2.0297   0.3863 1.832 0.066885 .  
SURG_RAD_SEQNo Treatment  0.2447    1.2772   0.2792 0.876 0.380797    
SURG_RAD_SEQOther         2.5970   13.4234   0.7749 3.351 0.000805 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                         exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQRad Alone        2.030     0.4927    0.9519     4.328
SURG_RAD_SEQNo Treatment     1.277     0.7829    0.7389     2.208
SURG_RAD_SEQOther           13.423     0.0745    2.9392    61.304

Concordance= 0.529  (se = 0.014 )
Rsquare= 0.026   (max possible= 0.997 )
Likelihood ratio test= 8.92  on 3 df,   p=0.03036
Wald test            = 13.71  on 3 df,   p=0.003326
Score (logrank) test = 19.43  on 3 df,   p=0.0002229
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SURG_RAD_SEQ

Surgery Yes/No

uni_var(test_var = "SURGERY_YN", data_imp = data)
_________________________________________________
   
## SURGERY_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

                 n events median 0.95LCL 0.95UCL
SURGERY_YN=No  300    171  35.22   30.65      43
SURGERY_YN=Ukn   2      2   6.16    5.88      NA
SURGERY_YN=Yes  32     14  56.64   40.25      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

                SURGERY_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    214      52    0.816  0.0232        0.772        0.862
   24    157      42    0.647  0.0296        0.591        0.708
   36    110      35    0.498  0.0318        0.439        0.564
   48     73      17    0.414  0.0324        0.355        0.483
   60     51      11    0.346  0.0330        0.287        0.417
  120     10      13    0.220  0.0362        0.160        0.304

                SURGERY_YN=Ukn 
     time n.risk n.event survival std.err lower 95% CI upper 95% CI

                SURGERY_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     22       6    0.793  0.0754        0.658        0.956
   24     18       2    0.721  0.0840        0.574        0.906
   36     12       1    0.666  0.0941        0.505        0.878
   48     10       1    0.610  0.1013        0.441        0.845
   60      6       3    0.407  0.1173        0.231        0.716




   
## Univariable Cox Proportional Hazard Model for:  SURGERY_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

  n= 334, number of events= 187 

                 coef exp(coef) se(coef)      z Pr(>|z|)   
SURGERY_YNUkn  2.3154   10.1287   0.7308  3.168  0.00153 **
SURGERY_YNYes -0.2733    0.7609   0.2783 -0.982  0.32621   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

              exp(coef) exp(-coef) lower .95 upper .95
SURGERY_YNUkn   10.1287    0.09873     2.418    42.421
SURGERY_YNYes    0.7609    1.31424     0.441     1.313

Concordance= 0.517  (se = 0.012 )
Rsquare= 0.02   (max possible= 0.997 )
Likelihood ratio test= 6.67  on 2 df,   p=0.03559
Wald test            = 11.18  on 2 df,   p=0.003734
Score (logrank) test = 16.8  on 2 df,   p=0.0002247
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SURGERY_YN

Radiation Yes/No

uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
   
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

                   n events median 0.95LCL 0.95UCL
RADIATION_YN=No  316    174   37.5    33.5    48.2
RADIATION_YN=Yes  18     13   21.7    20.2      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

                RADIATION_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    223      56    0.811  0.0228        0.767        0.857
   24    170      37    0.669  0.0284        0.616        0.727
   36    119      34    0.529  0.0310        0.471        0.593
   48     80      18    0.442  0.0320        0.383        0.509
   60     55      14    0.358  0.0329        0.299        0.429
  120     10      14    0.226  0.0365        0.165        0.310

                RADIATION_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     13       4    0.774  0.0997       0.6011        0.996
   24      5       7    0.327  0.1183       0.1612        0.665
   36      3       2    0.196  0.1009       0.0718        0.538
   48      3       0    0.196  0.1009       0.0718        0.538
   60      2       0    0.196  0.1009       0.0718        0.538




   
## Univariable Cox Proportional Hazard Model for:  RADIATION_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

  n= 334, number of events= 187 

                  coef exp(coef) se(coef)     z Pr(>|z|)
RADIATION_YNYes 0.4717    1.6028   0.2888 1.633    0.102

                exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes     1.603     0.6239      0.91     2.823

Concordance= 0.513  (se = 0.009 )
Rsquare= 0.007   (max possible= 0.997 )
Likelihood ratio test= 2.34  on 1 df,   p=0.126
Wald test            = 2.67  on 1 df,   p=0.1024
Score (logrank) test = 2.72  on 1 df,   p=0.09923





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RADIATION_YN

Chemo Yes/No

uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
   
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

               n events median 0.95LCL 0.95UCL
CHEMO_YN=No  141     81   37.4    31.1    59.4
CHEMO_YN=Yes 186    102   35.0    28.2    43.4
CHEMO_YN=Ukn   7      4   48.7    40.2      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

                CHEMO_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    100      29    0.783  0.0357        0.716        0.856
   24     80      14    0.668  0.0416        0.591        0.755
   36     56      19    0.505  0.0453        0.424        0.602
   48     41       6    0.444  0.0462        0.362        0.545
   60     28       7    0.361  0.0472        0.279        0.466
  120      6       5    0.275  0.0496        0.193        0.391

                CHEMO_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    131      30    0.826  0.0289       0.7716        0.885
   24     90      30    0.625  0.0388       0.5538        0.706
   36     62      17    0.500  0.0413       0.4247        0.587
   48     39      11    0.406  0.0422       0.3316        0.498
   60     27       6    0.337  0.0436       0.2614        0.434
  120      4       8    0.174  0.0522       0.0967        0.313

                CHEMO_YN=Ukn 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       1    0.833   0.152        0.583            1
   24      5       0    0.833   0.152        0.583            1
   36      4       0    0.833   0.152        0.583            1
   48      3       1    0.625   0.213        0.320            1
   60      2       1    0.417   0.222        0.147            1




   
## Univariable Cox Proportional Hazard Model for:  CHEMO_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

  n= 334, number of events= 187 

                coef exp(coef) se(coef)      z Pr(>|z|)
CHEMO_YNYes  0.08611   1.08993  0.14935  0.577    0.564
CHEMO_YNUkn -0.12535   0.88218  0.51276 -0.244    0.807

            exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes    1.0899     0.9175    0.8133     1.461
CHEMO_YNUkn    0.8822     1.1335    0.3229     2.410

Concordance= 0.506  (se = 0.02 )
Rsquare= 0.001   (max possible= 0.997 )
Likelihood ratio test= 0.46  on 2 df,   p=0.7961
Wald test            = 0.45  on 2 df,   p=0.7986
Score (logrank) test = 0.45  on 2 df,   p=0.7984
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  CHEMO_YN

Treatment Yes/No

uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
   
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

   7 observations deleted due to missingness 
              n events median 0.95LCL 0.95UCL
Tx_YN=FALSE  86     49   41.4    28.3    59.6
Tx_YN=TRUE  241    134   34.4    30.2    43.4

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

7 observations deleted due to missingness 
                Tx_YN=FALSE 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     62      16    0.806  0.0436        0.725        0.896
   24     49      10    0.670  0.0534        0.573        0.784
   36     36      10    0.529  0.0579        0.427        0.656
   48     23       5    0.441  0.0604        0.337        0.577
   60     14       5    0.333  0.0623        0.231        0.480
  120      4       3    0.242  0.0642        0.144        0.407

                Tx_YN=TRUE 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    169      43    0.808  0.0264        0.758        0.862
   24    121      34    0.636  0.0335        0.574        0.705
   36     82      26    0.491  0.0360        0.426        0.567
   48     57      12    0.416  0.0364        0.351        0.494
   60     41       8    0.353  0.0372        0.287        0.434
  120      6      10    0.216  0.0445        0.144        0.323




   
## Univariable Cox Proportional Hazard Model for:  Tx_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

  n= 327, number of events= 183 
   (7 observations deleted due to missingness)

             coef exp(coef) se(coef)     z Pr(>|z|)
Tx_YNTRUE 0.06002   1.06186  0.16726 0.359     0.72

          exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE     1.062     0.9417    0.7651     1.474

Concordance= 0.504  (se = 0.018 )
Rsquare= 0   (max possible= 0.996 )
Likelihood ratio test= 0.13  on 1 df,   p=0.7185
Wald test            = 0.13  on 1 df,   p=0.7197
Score (logrank) test = 0.13  on 1 df,   p=0.7197





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  Tx_YN

Metastases at Dx

uni_var(test_var = "mets_at_dx_F", data_imp = data)
_________________________________________________
   
## mets_at_dx_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

                     n events median 0.95LCL 0.95UCL
mets_at_dx_F=FALSE 328    183   36.5    31.1      47
mets_at_dx_F=TRUE    6      4   30.7    15.2      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

                mets_at_dx_F=FALSE 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    231      59    0.808  0.0226        0.765        0.853
   24    172      42    0.653  0.0282        0.600        0.711
   36    120      36    0.510  0.0305        0.453        0.573
   48     83      17    0.432  0.0312        0.375        0.497
   60     57      14    0.352  0.0320        0.295        0.421
  120     10      14    0.226  0.0356        0.166        0.308

                mets_at_dx_F=TRUE 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       1    0.833   0.152        0.583            1
   24      3       2    0.500   0.204        0.225            1
   36      2       0    0.500   0.204        0.225            1




   
## Univariable Cox Proportional Hazard Model for:  mets_at_dx_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

  n= 334, number of events= 187 

                   coef exp(coef) se(coef)     z Pr(>|z|)
mets_at_dx_FTRUE 0.3515    1.4211   0.5070 0.693    0.488

                 exp(coef) exp(-coef) lower .95 upper .95
mets_at_dx_FTRUE     1.421     0.7037    0.5261     3.839

Concordance= 0.502  (se = 0.006 )
Rsquare= 0.001   (max possible= 0.997 )
Likelihood ratio test= 0.43  on 1 df,   p=0.5114
Wald test            = 0.48  on 1 df,   p=0.4882
Score (logrank) test = 0.49  on 1 df,   p=0.4859





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  mets_at_dx_F

Tumor specific Variables

Node Size

Cox Proportional Hazard Ratio

Model #1

Full analysis

model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
                     ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
                      FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
                     data = data)
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + 
    INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    EDUCATION_F, data = data)

  n= 308, number of events= 172 
   (26 observations deleted due to missingness)

                                                  coef exp(coef)  se(coef)      z Pr(>|z|)    
SURG_RAD_SEQRad Alone                         1.042549  2.836438  0.485031  2.149   0.0316 *  
SURG_RAD_SEQNo Treatment                      0.415025  1.514409  0.316377  1.312   0.1896    
SURG_RAD_SEQOther                             3.241001 25.559303  0.830177  3.904 9.46e-05 ***
INSURANCE_FNone                               0.820261  2.271092  0.464342  1.767   0.0773 .  
INSURANCE_FMedicaid                           0.306604  1.358803  0.431224  0.711   0.4771    
INSURANCE_FMedicare                           0.200700  1.222258  0.266328  0.754   0.4511    
INSURANCE_FOther Government                   0.344992  1.411978  0.798993  0.432   0.6659    
INSURANCE_FUnknown                           -0.678558  0.507348  1.082776 -0.627   0.5309    
AGE                                           0.029390  1.029826  0.011515  2.552   0.0107 *  
SEX_FFemale                                   0.105415  1.111172  0.173309  0.608   0.5430    
RACE_FBlack                                  -0.113112  0.893051  0.245228 -0.461   0.6446    
RACE_FOther/Unk                              -0.108362  0.897303  0.404023 -0.268   0.7885    
RACE_FAsian                                   0.217338  1.242764  0.762987  0.285   0.7758    
INCOME_F$38,000 - $47,999                    -0.008822  0.991217  0.309667 -0.028   0.9773    
INCOME_F$48,000 - $62,999                     0.331145  1.392562  0.296645  1.116   0.2643    
INCOME_F$63,000 +                             0.543429  1.721901  0.363952  1.493   0.1354    
U_R_FUrban                                   -0.268208  0.764749  0.287515 -0.933   0.3509    
U_R_FRural                                    0.993340  2.700237  1.171308  0.848   0.3964    
FACILITY_TYPE_FComprehensive Comm Ca Program -1.050663  0.349706  0.585195 -1.795   0.0726 .  
FACILITY_TYPE_FAcademic/Research Program     -0.876357  0.416297  0.542354 -1.616   0.1061    
FACILITY_TYPE_FIntegrated Network Ca Program -0.204085  0.815393  0.675427 -0.302   0.7625    
FACILITY_LOCATION_FMiddle Atlantic           -0.255995  0.774146  0.398492 -0.642   0.5206    
FACILITY_LOCATION_FSouth Atlantic             0.754022  2.125532  0.399990  1.885   0.0594 .  
FACILITY_LOCATION_FEast North Central        -0.115090  0.891286  0.416485 -0.276   0.7823    
FACILITY_LOCATION_FEast South Central         0.508649  1.663043  0.486864  1.045   0.2961    
FACILITY_LOCATION_FWest North Central         0.384315  1.468608  0.422293  0.910   0.3628    
FACILITY_LOCATION_FWest South Central         0.313176  1.367762  0.528329  0.593   0.5533    
FACILITY_LOCATION_FMountain                   0.339495  1.404239  0.479745  0.708   0.4792    
FACILITY_LOCATION_FPacific                   -0.048822  0.952351  0.446797 -0.109   0.9130    
EDUCATION_F13 - 20.9%                         0.125646  1.133881  0.306833  0.409   0.6822    
EDUCATION_F7 - 12.9%                         -0.098455  0.906236  0.351923 -0.280   0.7797    
EDUCATION_FLess than 7%                      -0.760029  0.467653  0.422155 -1.800   0.0718 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                             exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQRad Alone                           2.8364    0.35255   1.09626     7.339
SURG_RAD_SEQNo Treatment                        1.5144    0.66032   0.81460     2.815
SURG_RAD_SEQOther                              25.5593    0.03912   5.02228   130.076
INSURANCE_FNone                                 2.2711    0.44032   0.91408     5.643
INSURANCE_FMedicaid                             1.3588    0.73594   0.58358     3.164
INSURANCE_FMedicare                             1.2223    0.81816   0.72521     2.060
INSURANCE_FOther Government                     1.4120    0.70823   0.29493     6.760
INSURANCE_FUnknown                              0.5073    1.97103   0.06076     4.236
AGE                                             1.0298    0.97104   1.00684     1.053
SEX_FFemale                                     1.1112    0.89995   0.79115     1.561
RACE_FBlack                                     0.8931    1.11976   0.55225     1.444
RACE_FOther/Unk                                 0.8973    1.11445   0.40647     1.981
RACE_FAsian                                     1.2428    0.80466   0.27857     5.544
INCOME_F$38,000 - $47,999                       0.9912    1.00886   0.54023     1.819
INCOME_F$48,000 - $62,999                       1.3926    0.71810   0.77859     2.491
INCOME_F$63,000 +                               1.7219    0.58075   0.84375     3.514
U_R_FUrban                                      0.7647    1.30762   0.43530     1.344
U_R_FRural                                      2.7002    0.37034   0.27188    26.818
FACILITY_TYPE_FComprehensive Comm Ca Program    0.3497    2.85955   0.11107     1.101
FACILITY_TYPE_FAcademic/Research Program        0.4163    2.40213   0.14380     1.205
FACILITY_TYPE_FIntegrated Network Ca Program    0.8154    1.22640   0.21699     3.064
FACILITY_LOCATION_FMiddle Atlantic              0.7741    1.29175   0.35451     1.691
FACILITY_LOCATION_FSouth Atlantic               2.1255    0.47047   0.97050     4.655
FACILITY_LOCATION_FEast North Central           0.8913    1.12197   0.39401     2.016
FACILITY_LOCATION_FEast South Central           1.6630    0.60131   0.64045     4.318
FACILITY_LOCATION_FWest North Central           1.4686    0.68092   0.64187     3.360
FACILITY_LOCATION_FWest South Central           1.3678    0.73112   0.48562     3.852
FACILITY_LOCATION_FMountain                     1.4042    0.71213   0.54838     3.596
FACILITY_LOCATION_FPacific                      0.9524    1.05003   0.39672     2.286
EDUCATION_F13 - 20.9%                           1.1339    0.88193   0.62143     2.069
EDUCATION_F7 - 12.9%                            0.9062    1.10347   0.45466     1.806
EDUCATION_FLess than 7%                         0.4677    2.13834   0.20445     1.070

Concordance= 0.672  (se = 0.024 )
Rsquare= 0.194   (max possible= 0.996 )
Likelihood ratio test= 66.58  on 32 df,   p=0.0003192
Wald test            = 69.18  on 32 df,   p=0.0001505
Score (logrank) test = 79.13  on 32 df,   p=7.212e-06

Summary of Model

model_one %>%
        tidy(., exponentiate = TRUE) %>%
        select(term, estimate, conf.low, conf.high, p.value) %>%
        rename(Variable = term,
               Hazard_Ratio = estimate) %>%
        tbl_df %>%
        print(n = nrow(.))

Linear Regression

fit_surv <- lm(DX_LASTCONTACT_DEATH_MONTHS ~
                 FACILITY_TYPE_F + FACILITY_LOCATION_F +
                 SURGERY_YN + 
                 AGE_F +  INCOME_F + 
                 EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F,
   data = data3)
summary(fit_surv) # R^2 = 0.2937 , p = 2.712e-08

Call:
lm(formula = DX_LASTCONTACT_DEATH_MONTHS ~ FACILITY_TYPE_F + 
    FACILITY_LOCATION_F + SURGERY_YN + AGE_F + INCOME_F + EDUCATION_F + 
    YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F, data = data3)

Residuals:
    Min      1Q  Median      3Q     Max 
-63.823 -17.206  -0.066  13.580  62.475 

Coefficients:
                                               Estimate Std. Error t value Pr(>|t|)    
(Intercept)                                     81.5123    40.9187   1.992 0.047619 *  
FACILITY_TYPE_FComprehensive Comm Ca Program    13.5630    11.6841   1.161 0.246996    
FACILITY_TYPE_FAcademic/Research Program         7.9960    11.1772   0.715 0.475141    
FACILITY_TYPE_FIntegrated Network Ca Program   -22.9532    14.7217  -1.559 0.120419    
FACILITY_LOCATION_FMiddle Atlantic               0.9357     7.6660   0.122 0.902965    
FACILITY_LOCATION_FSouth Atlantic              -18.8857     7.7792  -2.428 0.016009 *  
FACILITY_LOCATION_FEast North Central           -7.1142     8.0935  -0.879 0.380372    
FACILITY_LOCATION_FEast South Central          -11.7327    10.0915  -1.163 0.246254    
FACILITY_LOCATION_FWest North Central          -13.5558     8.9291  -1.518 0.130427    
FACILITY_LOCATION_FWest South Central          -15.7062     9.9630  -1.576 0.116377    
FACILITY_LOCATION_FMountain                     -8.5483     9.0646  -0.943 0.346705    
FACILITY_LOCATION_FPacific                      -1.2543     8.2379  -0.152 0.879121    
SURGERY_YNYes                                   12.3480     5.5617   2.220 0.027441 *  
AGE_F(54,64]                                     2.7563     5.6702   0.486 0.627386    
AGE_F(64,74]                                    -5.3610     5.5001  -0.975 0.330796    
AGE_F(74,100]                                  -11.2008     5.5360  -2.023 0.044272 *  
INCOME_F$38,000 - $47,999                        1.7899     5.8210   0.307 0.758765    
INCOME_F$48,000 - $62,999                       -6.5934     5.8835  -1.121 0.263674    
INCOME_F$63,000 +                              -20.1612     7.1869  -2.805 0.005484 ** 
EDUCATION_F13 - 20.9%                           -2.1926     6.0687  -0.361 0.718223    
EDUCATION_F7 - 12.9%                             2.9511     6.7457   0.437 0.662205    
EDUCATION_FLess than 7%                         15.9779     7.8400   2.038 0.042763 *  
YEAR_OF_DIAGNOSIS2005                          -11.7085    19.0000  -0.616 0.538383    
YEAR_OF_DIAGNOSIS2006                           -7.5507    15.7224  -0.480 0.631534    
YEAR_OF_DIAGNOSIS2007                          -19.9788    13.9748  -1.430 0.154261    
YEAR_OF_DIAGNOSIS2008                          -31.1960    13.9668  -2.234 0.026531 *  
YEAR_OF_DIAGNOSIS2009                          -34.2623    13.6334  -2.513 0.012694 *  
YEAR_OF_DIAGNOSIS2010                          -46.1265    12.7643  -3.614 0.000375 ***
YEAR_OF_DIAGNOSIS2011                          -50.9638    12.6538  -4.028 7.79e-05 ***
YEAR_OF_DIAGNOSIS2012                          -48.6167    12.8027  -3.797 0.000190 ***
YEAR_OF_DIAGNOSIS2013                          -49.1303    12.7822  -3.844 0.000159 ***
YEAR_OF_DIAGNOSIS2014                          -58.1213    12.5931  -4.615 6.71e-06 ***
YEAR_OF_DIAGNOSIS2015                          -63.3904    12.4690  -5.084 7.98e-07 ***
SITE_TEXTC44.4 Skin of scalp and neck           -3.1766    36.5057  -0.087 0.930740    
SITE_TEXTC44.5 Skin of trunk                   -62.2680    27.3058  -2.280 0.023556 *  
SITE_TEXTC44.6 Skin of upper limb and shoulder -26.3479    32.3707  -0.814 0.416570    
SITE_TEXTC44.7 Skin of lower limb and hip      -20.3268    27.8527  -0.730 0.466301    
SITE_TEXTC44.8 Overlapping lesion of skin      -50.7196    26.4697  -1.916 0.056661 .  
SITE_TEXTC44.9 Skin, NOS                       -51.9597    26.2985  -1.976 0.049448 *  
GRADE_F5                                        55.6413    27.0857   2.054 0.041148 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 24.73 on 217 degrees of freedom
  (12 observations deleted due to missingness)
Multiple R-squared:  0.4088,    Adjusted R-squared:  0.3025 
F-statistic: 3.847 on 39 and 217 DF,  p-value: 1.154e-10

Prediction Logistic Regression Models

Surgery

Chemo

Radiation

Immunotherapy

Any Treatment

Metastasis at Time of Diagnosis

LS0tCnRpdGxlOiAiU2V6YXJ5IFN5bmRyb21lIgphdXRob3I6ICJSYW1pZSBGYXRoeSIKZGF0ZTogIjExLzI3LzIwMTkiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IHVuaXRlZAogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCi0tLQoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CgpsaWJyYXJ5KCJnZ3Bsb3QyIikKbGlicmFyeSgiZHBseXIiKQpsaWJyYXJ5KCJ0aWR5ciIpCmxpYnJhcnkoImtuaXRyIikKbGlicmFyeSgidGFibGVvbmUiKQpsaWJyYXJ5KCJmb3JjYXRzIikKbGlicmFyeSgic3Vydml2YWwiKQpsaWJyYXJ5KCJucHN1cnYiKQpsaWJyYXJ5KCJicm9vbSIpCmxpYnJhcnkoInRpYmJsZSIpCmxpYnJhcnkoInJlYWRyIikKbGlicmFyeSgic3Vydm1pbmVyIikKbGlicmFyeSgic3RyaW5nciIpCgoKa25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG89VFJVRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1UUlVFKQonJSFpbiUnIDwtIGZ1bmN0aW9uKHgseSkhKCclaW4lJyh4LHkpKQpgYGAKCmBgYHtyfQpwX3RhYmxlIDwtIGZ1bmN0aW9uKHRhYl9kYXRhLCAuLi4pIHsKICB0YWJfZGF0YV8yIDwtIGRlcGFyc2Uoc3Vic3RpdHV0ZSh0YWJfZGF0YSkpCiAgCiAgdGFibGVfcCA8LSBkby5jYWxsKENyZWF0ZVRhYmxlT25lLCAKICAgICAgICAgICAgICAgICAgICAgbGlzdChkYXRhID0gYXMubmFtZSh0YWJfZGF0YV8yKSwgaW5jbHVkZU5BID0gVFJVRSwgLi4uKSkKICB0YWJsZV9wX291dCA8LSBwcmludCh0YWJsZV9wLAogICAgICAgICAgICAgICAgICAgICAgIHNob3dBbGxMZXZlbHMgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgIHByaW50VG9nZ2xlID0gRkFMU0UpCiAga2FibGUodGFibGVfcF9vdXQsCiAgICAgICAgYWxpZ24gPSAiYyIpCn0KYGBgCgpgYGB7cn0KdW5pX3ZhciA8LSBmdW5jdGlvbih0ZXN0X3ZhciwgZGF0YV9pbXApIHsKCiAgICAgICAgICAgICAgICAKICAgICAgICBjYXQoIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiICAgXG4jIyIsIHRlc3RfdmFyKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIpCiAgICAgICAgY2F0KCJcbiIpCgogICAgICAgIAogICAgICAgIGYgPC0gYXMuZm9ybXVsYShwYXN0ZSgiU3VydihEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMsIFBVRl9WSVRBTF9TVEFUVVMgPT0gMCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5uYW1lKHRlc3RfdmFyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gIiB+ICIgKSkKICAgICAgICAKICAgICAgICBkYXRhX2ltcF8yIDwtIGRlcGFyc2Uoc3Vic3RpdHV0ZShkYXRhX2ltcCkpCgogICAgICAgIGttX2ZpdCA8LSBkby5jYWxsKCJzdXJ2Zml0IiwgbGlzdChmb3JtdWxhID0gZiwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMikpKQoKICAgICAgICBwcmludChrbV9maXQpCiAgICAgICAgY2F0KCJcbiIpCgogICAgICAgIHByaW50KHN1bW1hcnkoa21fZml0LCB0aW1lcyA9IGMoMTIsIDI0LCAzNiwgNDgsIDYwLCAxMjApKSkKICAgICAgICBjYXQoIlxuIikKCgogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiICAgXG4jIyBVbml2YXJpYWJsZSBDb3ggUHJvcG9ydGlvbmFsIEhhemFyZCBNb2RlbCBmb3I6ICIsIHRlc3RfdmFyKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiXG4iKQoKCiAgICAgICAgbl9sZXZlbHMgPC0gbmxldmVscyhkYXRhX2ltcFtbdGVzdF92YXJdXSkKCiAgICAgICAgaWYobl9sZXZlbHMgPT0gMSl7CiAgICAgICAgICAgICAgICBwcmludCgiT25seSBvbmUgbGV2ZWwsIG5vIENveCBtb2RlbCBwZXJmb3JtZWQiKQogICAgICAgICAgICAgICAgY2F0KCJcbiIpCgogICAgICAgIH0gZWxzZSB7CgoKICAgICAgICAgICAgICAgIGNveF9maXQgPC0gZG8uY2FsbCgiY294cGgiLCBsaXN0KGZvcm11bGEgPSBmLCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSkpCgogICAgICAgICAgICAgICAgcHJpbnQoc3VtbWFyeShjb3hfZml0KSkKICAgICAgICAgICAgICAgIGNhdCgiXG4iKQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBkby5jYWxsKCJnZ2ZvcmVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KG1vZGVsID0gY294X2ZpdCwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMikpKQoKCiAgICAgICAgfQoKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMgVW5hZGp1c3RlZCBLYXBsYW4gTWVpZXIgT3ZlcmFsbCBTdXJ2aXZhbCBDdXJ2ZSBmb3I6ICIsIHRlc3RfdmFyKQoKCiAgICAgICAgcCA8LSBkby5jYWxsKCJnZ3N1cnZwbG90IiwKICAgICAgICAgICAgICAgICAgICAgbGlzdChmaXQgPSBrbV9maXQsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIiwgY2Vuc29yID0gRkFMU0UsIGxlZ2VuZCA9ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXR5cGUgPSAic3RyYXRhIiwgeGxhYiA9ICJUaW1lIChNb250aHMpIikpCgogICAgICAgIHByaW50KHApCgp9CgpgYGAKCmBgYHtyIGNodW5rMiwgY2FjaGU9VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcmVzdWx0cz0naGlkZSd9CmNvbC53aWR0aCA8LSBjKDM3LCAxMCwgMSwgMSwgMywgMSwgMiwgMSwgMiwgMSwgMSwgMSwgMSwgMSwgMSwgOCwgMiwgMiwgMiwgNCwgNCwgMSwgNCwgMSwgMSwKICAgICAgICAgICAgICAgMSwgMywgMiwgMiwgOCwgMiwgNSwgNSwgNSwgNCwgNSwgNSwgNSw0LCAyLCAxLCAyLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAzLAogICAgICAgICAgICAgICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCA2LCA4LAogICAgICAgICAgICAgICA4LCA4LCAyLCAxLCAxLCAxLCAxLCA4LCAxLCAxLCA4LCAxLCAxLCAyLCAyLCA1LCAyLCA1LCAzLCAxLCAzLCAxLCA4LCA4LCAyLCA4LAogICAgICAgICAgICAgICAyLCA4LCAyLCAyLCAxLCA4LCAxLCAxLCAxLCAxLCAxLCA4LCAxLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAyLCAxLCAzLCAxLCAxLAogICAgICAgICAgICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxKQoKY29sLm5hbWVzLmFiciA8LSBjKCJQVUZfQ0FTRV9JRCIsICJQVUZfRkFDSUxJVFlfSUQiLCAiRkFDSUxJVFlfVFlQRV9DRCIsICJGQUNJTElUWV9MT0NBVElPTl9DRCIsCiAgICAgICAgICAgICAgICAgICAiQUdFIiwgIlNFWCIsICJSQUNFIiwgIlNQQU5JU0hfSElTUEFOSUNfT1JJR0lOIiwgIklOU1VSQU5DRV9TVEFUVVMiLAogICAgICAgICAgICAgICAgICAgIk1FRF9JTkNfUVVBUl8wMCIsICJOT19IU0RfUVVBUl8wMCIsICJVUl9DRF8wMyIsICJNRURfSU5DX1FVQVJfMTIiLCAiTk9fSFNEX1FVQVJfMTIiLAogICAgICAgICAgICAgICAgICAgIlVSX0NEXzEzIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwgIlNFUVVFTkNFX05VTUJFUiIsICJDTEFTU19PRl9DQVNFIiwKICAgICAgICAgICAgICAgICAgICJZRUFSX09GX0RJQUdOT1NJUyIsICJQUklNQVJZX1NJVEUiLCAiTEFURVJBTElUWSIsICJISVNUT0xPR1kiLCAiQkVIQVZJT1IiLCAiR1JBREUiLAogICAgICAgICAgICAgICAgICAgIkRJQUdOT1NUSUNfQ09ORklSTUFUSU9OIiwgIlRVTU9SX1NJWkUiLCAiUkVHSU9OQUxfTk9ERVNfUE9TSVRJVkUiLAogICAgICAgICAgICAgICAgICAgIlJFR0lPTkFMX05PREVTX0VYQU1JTkVEIiwgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIlJYX1NVTU1fRFhTVEdfUFJPQyIsICJUTk1fQ0xJTl9UIiwKICAgICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLCAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLAogICAgICAgICAgICAgICAgICAgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgIlROTV9FRElUSU9OX05VTUJFUiIsICJBTkFMWVRJQ19TVEFHRV9HUk9VUCIsICJDU19NRVRTX0FUX0RYIiwKICAgICAgICAgICAgICAgICAgICJDU19NRVRTX0VWQUwiLCAiQ1NfRVhURU5TSU9OIiwgIkNTX1RVTU9SX1NJWkVFWFRfRVZBTCIsICJDU19NRVRTX0RYX0JPTkUiLCAiQ1NfTUVUU19EWF9CUkFJTiIsCiAgICAgICAgICAgICAgICAgICAiQ1NfTUVUU19EWF9MSVZFUiIsICJDU19NRVRTX0RYX0xVTkciLCAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT04iLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8zIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl81IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzciLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfOCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzkiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEyIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTMiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTQiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE2IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE3IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTgiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xOSIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIxIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjIiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjMiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yNCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzI1IiwKICAgICAgICAgICAgICAgICAgICJDU19WRVJTSU9OX0xBVEVTVCIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLCAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU1VSR19QUklNX1NJVEUiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMCIsICJSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU0NPUEVfUkVHX0xOX1NVUiIsICJSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwgIlJFQURNX0hPU1BfMzBfREFZUyIsCiAgICAgICAgICAgICAgICAgICAiUkVBU09OX0ZPUl9OT19TVVJHRVJZIiwgIkRYX1JBRF9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9SQURJQVRJT04iLCAiUkFEX0xPQ0FUSU9OX09GX1JYIiwKICAgICAgICAgICAgICAgICAgICJSQURfVFJFQVRfVk9MIiwgIlJBRF9SRUdJT05BTF9SWF9NT0RBTElUWSIsICJSQURfUkVHSU9OQUxfRE9TRV9DR1kiLCAiUkFEX0JPT1NUX1JYX01PREFMSVRZIiwKICAgICAgICAgICAgICAgICAgICJSQURfQk9PU1RfRE9TRV9DR1kiLCAiUkFEX05VTV9UUkVBVF9WT0wiLCAiUlhfU1VNTV9TVVJHUkFEX1NFUSIsICJSQURfRUxBUFNFRF9SWF9EQVlTIiwKICAgICAgICAgICAgICAgICAgICJSRUFTT05fRk9SX05PX1JBRElBVElPTiIsICJEWF9TWVNURU1JQ19TVEFSVEVEX0RBWVMiLCAiRFhfQ0hFTU9fU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fQ0hFTU8iLAogICAgICAgICAgICAgICAgICAgIkRYX0hPUk1PTkVfU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fSE9STU9ORSIsICJEWF9JTU1VTk9fU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fSU1NVU5PVEhFUkFQWSIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9UUk5TUExOVF9FTkRPIiwgIlJYX1NVTU1fU1lTVEVNSUNfU1VSX1NFUSIsICJEWF9PVEhFUl9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9PVEhFUiIsCiAgICAgICAgICAgICAgICAgICAiUEFMTElBVElWRV9DQVJFIiwgIlJYX1NVTU1fVFJFQVRNRU5UX1NUQVRVUyIsICJQVUZfMzBfREFZX01PUlRfQ0QiLCAiUFVGXzkwX0RBWV9NT1JUX0NEIiwKICAgICAgICAgICAgICAgICAgICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLCAiUFVGX1ZJVEFMX1NUQVRVUyIsICJSWF9IT1NQX1NVUkdfUFJJTV9TSVRFIiwgIlJYX0hPU1BfQ0hFTU8iLAogICAgICAgICAgICAgICAgICAgIlJYX0hPU1BfSU1NVU5PVEhFUkFQWSIsICJSWF9IT1NQX0hPUk1PTkUiLCAiUlhfSE9TUF9PVEhFUiIsICJQVUZfTVVMVF9TT1VSQ0UiLCAiUkVGRVJFTkNFX0RBVEVfRkxBRyIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9TQ09QRV9SRUdfTE5fMjAxMiIsICJSWF9IT1NQX0RYU1RHX1BST0MiLCAiUEFMTElBVElWRV9DQVJFX0hPU1AiLCAiVFVNT1JfU0laRV9TVU1NQVJZIiwKICAgICAgICAgICAgICAgICAgICJNRVRTX0FUX0RYX09USEVSIiwgIk1FVFNfQVRfRFhfRElTVEFOVF9MTiIsICJNRVRTX0FUX0RYX0JPTkUiLCAiTUVUU19BVF9EWF9CUkFJTiIsCiAgICAgICAgICAgICAgICAgICAiTUVUU19BVF9EWF9MSVZFUiIsICJNRVRTX0FUX0RYX0xVTkciLCAiTk9fSFNEX1FVQVJfMTYiLCAiTUVEX0lOQ19RVUFSXzE2IiwgIk1FRElDQUlEX0VYUE5fQ09ERSIpCgoKCiNSZWFkIGluIGRhdGEgZm9yIGVhY2ggc3Vic2l0ZQpsaXAgPC0gcmVhZF9md2YoJ05DREJQVUZfTGlwLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCm1lbGFub21hIDwtIHJlYWRfZndmKCdOQ0RCUFVGX01lbGFub21hLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAgICAgICAgICAgICAgICAgICAgICAKc2tpbiA8LSByZWFkX2Z3ZignTkNEQlBVRl9PdFNraW4uMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKaG9kZ2V4dHIgPC0gcmVhZF9md2YoJ05DREJQVUZfSG9kZ0V4dHIuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKaG9kZ25kYWwgPC0gcmVhZF9md2YoJ05DREJQVUZfSG9kZ05kYWwuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKTkhMbmRhbCA8LSByZWFkX2Z3ZignTkNEQlBVRl9OSExOZGFsLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCk5ITGV4dHIgPC0gcmVhZF9md2YoJ05DREJQVUZfTkhMRXh0ci4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgoKYnJlYXN0IDwtICByZWFkX2Z3ZignTkNEQlBVRl9CcmVhc3QuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKdnVsdmEgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX1Z1bHZhLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnZhZ2luYSA8LSAgcmVhZF9md2YoJ05DREJQVUZfVmFnaW5hLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnBlbmlzIDwtICByZWFkX2Z3ZignTkNEQlBVRl9QZW5pcy4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpvdGxldWsgPC0gcmVhZF9md2YoJ05DREJQVUZfT3RMZXVrLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAKb3RoZXJhY3V0ZWxldWsgIDwtIHJlYWRfZndmKCdOQ0RCUFVGX090QWNMZXVrLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAKQUxMICA8LSByZWFkX2Z3ZignTkNEQlBVRl9BTHltTGV1ay4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgoKI0NvbWJpbmUgZGF0YSBmb3IgYWxsIHN1YnNpdGVzCmRhdCA8LSBiaW5kX3Jvd3MobGlwLCBtZWxhbm9tYSwgc2tpbiwgaG9kZ2V4dHIsIGhvZGduZGFsLCBOSExuZGFsLCBicmVhc3QsIAogICAgICAgICAgICAgICAgIHZ1bHZhLCB2YWdpbmEsIHBlbmlzLCBOSExleHRyLCBvdGxldWssIG90aGVyYWN1dGVsZXVrLCBBTEwpCgpybShsaXAsIG1lbGFub21hLCBza2luLCBob2RnZXh0ciwgaG9kZ25kYWwsIE5ITG5kYWwsIGJyZWFzdCwgdnVsdmEsIHZhZ2luYSwgCiAgIHBlbmlzLCBOSExleHRyLCBvdGxldWssIG90aGVyYWN1dGVsZXVrLCBBTEwpCgpwcmltX3NpdGVfdGV4dCA8LSBkYXRhX2ZyYW1lKFBSSU1BUllfU0lURSA9IGMoCiNOSEwgc2l0ZXMKIkMwMDAiLCAKIkMwMDEiLCAKIkMwMDIiLCAKIkMwMDMiLCAKIkMwMDQiLCAKIkMwMDUiLCAKIkMwMDYiLCAKIkMwMDgiLAoiQzAwOSIsIAoiQzAxOSIsIAoiQzAyMCIsIAoiQzAyMSIsCiJDMDIyIiwgCiJDMDIzIiwgCiJDMDI0IiwgCiJDMDI4IiwgCiJDMDI5IiwKIkMwMzAiLAoiQzAzMSIsCiJDMDM5IiwgCiJDMDQwIiwgCiJDMDQxIiwgCiJDMDQ4IiwKIkMwNDkiLCAKIkMwNTAiLCAKIkMwNTEiLCAKIkMwNTIiLCAKIkMwNTgiLCAKIkMwNTkiLAoiQzA2MCIsIAoiQzA2MSIsIAoiQzA2MiIsIAoiQzA2OCIsIAoiQzA2OSIsIAoiQzA3OSIsICAKIkMwOTgiLAoiQzA5OSIsCiJDMTExIiwKIkMxNDIiLAoiQzMwMCIsCiJDMzc5IiwKIkM0MjAiLAoiQzQyMiIsCiJDNDI0IiwKCiNza2luL21lbGFub21hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNDQwIiwgIkM0NDEiLCAiQzQ0MiIsICJDNDQzIiwgIkM0NDQiLCAiQzQ0NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNDQ2IiwgIkM0NDciLCAiQzQ0OCIsICJDNDQ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNicmVhc3QgLSBuaXBwbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM1MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhZ2luYS92dWx2YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzUxMCIsICJDNTExIiwgIkM1MTIiLCAiQzUxOCIsICJDNTE5IiwgIkM1MjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3BlbmlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNjAwIiwgIkM2MDEiLCAiQzYwMiIsICJDNjA4IiwgIkM2MDkiLCAiQzYzOSIsCgoiQzc3MCIsCiJDNzcxIiwKIkM3NzIiLAoiQzc3MyIsCiJDNzc0IiwKIkM3NzUiLAoiQzc3OCIsCiJDNzc5IiksCgpTSVRFX1RFWFQgPSBjKAoiQzAwLjAgRXh0ZXJuYWwgTGlwOiBVcHBlciBOT1MiLAoiQzAwLjEgRXh0ZXJuYWwgTGlwOiBMb3dlciBOT1MiLAoiQzAwLjIgRXh0ZXJuYWwgTGlwOiBOT1MiLAoiQzAwLjMgTGlwOiBVcHBlciBNdWNvc2EiLAoiQzAwLjQgTGlwOiBMb3dlciBNdWNvc2EiLAoiQzAwLjUgTGlwOiBNdWNvc2EgTk9TIiwKIkMwMC42IExpcDogQ29tbWlzc3VyZSIsCiJDMDAuOCBMaXA6IE92ZXJsYXBwaW5nIiwKIkMwMC45IExpcCBOT1MiLAoiQzAxLjkgVG9uZ3VlOiBCYXNlIE5PUyIsCiJDMDIuMCBUb25ndWU6IERvcnNhbCBOT1MiLAoiQzAyLjEgVG9uZ3VlOiBCb3JkZXIsIFRpcCIsCiJDMDIuMiBUb25ndWU6IFZlbnRyYWwgTk9TIiwKIkMwMi4zIFRvbmd1ZTogQW50ZXJpb3IgTk9TIiwKIkMwMi40IExpbmd1YWwgVG9uc2lsIiwKIkMwMi44IFRvbmd1ZTogT3ZlcmxhcHBpbmciLAoiQzAyLjkgVG9uZ3VlOiBOT1MiLAoiQzAzLjAgR3VtOiBVcHBlciIsCiJDMDMuMSBHdW06IExvd2VyIiwKIkMwMy45IEd1bSBOT1MiLAoiQzA0LjAgTW91dGg6IEFudGVyaW9yIEZsb29yIiwKIkMwNC4xIE1vdXRoOiBMYXRlcmFsIEZsb29yIiwKIkMwNC44IE1vdXRoOiBPdmVybGFwcGluZyBGbG9vciIsCiJDMDQuOSBGbG9vciBvZiBNb3V0aCBOT1MiLAoiQzA1LjAgSGFyZCBQYWxhdGUiLAoiQzA1LjEgU29mdCBQYWxhdGUgTk9TIiwKIkMwNS4yIFV2dWxhIiwKIkMwNS44IFBhbGF0ZTogT3ZlcmxhcHBpbmciLAoiQzA1LjkgUGFsYXRlIE5PUyIsCiJDMDYuMCBDaGVlayBNdWNvc2EiLAoiQzA2LjEgTW91dGg6IFZlc3RpYnVsZSIsCiJDMDYuMiBSZXRyb21vbGFyIEFyZWEiLAoiQzA2LjggTW91dGg6IE90aGVyIE92ZXJsYXBwaW5nIiwKIkMwNi45IE1vdXRoIE5PUyIsCiJDMDcuOSBQYXJvdGlkIEdsYW5kIiwKICAiQzA5LjggVG9uc2lsOiBPdmVybGFwcGluZyIsCiAgIkMwOS45IFRvbnNpbCBOT1MiLAogICJDMTEuMSBOYXNvcGhhcnlueDogUG9zdGVyIFdhbGwiLCAKICAiQzE0LjIgV2FsZGV5ZXIgUmluZyIsCiAgIkMzMC4wIE5hc2FsIENhdml0eSIsCiAgIkMzNy45IFRoeW11cyIsCiJDNDIuMCBCbG9vZCIsCiAgIkM0Mi4yIFNwbGVlbiIsCiJDNDIuNCBIZW1hdG9wb2lldGljIE5PUyIsCgogI3NraW4KIkM0NC4wIFNraW4gb2YgbGlwLCBOT1MiLAoiQzQ0LjEgRXllbGlkIiwKIkM0NC4yIEV4dGVybmFsIGVhciIsCiJDNDQuMyBTa2luIG9mIGVhciBhbmQgdW5zcGVjaWZpZWQgcGFydHMgb2YgZmFjZSIsCiJDNDQuNCBTa2luIG9mIHNjYWxwIGFuZCBuZWNrIiwKIkM0NC41IFNraW4gb2YgdHJ1bmsiLAoiQzQ0LjYgU2tpbiBvZiB1cHBlciBsaW1iIGFuZCBzaG91bGRlciIsCiJDNDQuNyBTa2luIG9mIGxvd2VyIGxpbWIgYW5kIGhpcCIsCiJDNDQuOCBPdmVybGFwcGluZyBsZXNpb24gb2Ygc2tpbiIsCiJDNDQuOSBTa2luLCBOT1MiLCAKCiNicmVhc3QKIkM1MC4wIE5pcHBsZSIsCgojdnVsdmEvdmFnaW5hCiJDNTEuMCBMYWJpdW0gbWFqdXMiLAoiQzUxLjEgTGFiaXVtIG1pbnVzIiwKIkM1MS4yIENsaXRvcmlzIiwKIkM1MS44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiB2dWx2YSIsCiJDNTEuOSBWdWx2YSwgTk9TIiwKIkM1Mi45IFZhZ2luYSwgTk9TIiwKCiNwZW5pcwoiQzYwLjAgUHJlcHVjZSIsCiJDNjAuMSBHbGFucyBwZW5pcyIsCiJDNjAuMiBCb2R5IG9mIHBlbmlzIiwKIkM2MC44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiBwZW5pcyIsCiJDNjAuOSBQZW5pcyIsCiJDNjMuMiBTY3JvdHVtLCBOT1MiLAoKICAiQzc3LjAgTHltcGggTm9kZXM6IEhlYWRGYWNlTmVjayIsCiAgIkM3Ny4xIEludHJhdGhvcmFjaWMgTHltcGggTm9kZXMiLAogICJDNzcuMiBJbnRyYS1hYmRvbWluYWwgTHltcGhOb2RlcyIsCiAgIkM3Ny4zIEx5bXBoIE5vZGVzIG9mIGF4aWxsYSBvciBhcm0gIiwKICAiQzc3LjQgTHltcGggTm9kZXM6IExlZyIsCiAgIkM3Ny41IFBlbHZpYyBMeW1waCBOb2RlcyIsCiAgIkM3Ny44IEx5bXBoIE5vZGVzOiBtdWx0aXBsZSByZWdpb24iLAogICJDNzcuOSBMeW1waCBOb2RlIE5PUyIpKQoKCmRhdCA8LSBtZXJnZShkYXQsIHByaW1fc2l0ZV90ZXh0LCBieSA9ICJQUklNQVJZX1NJVEUiLCBhbGwueCA9IFRSVUUpIAoKcm0ocHJpbV9zaXRlX3RleHQpCgojIGNvbnZlcnQgbnVtZXJpYyB2YXJpYWJsZXMgZnJvbSBjaGFyYWN0ZXIgY2xhc3MgdG8gbnVtZXJpYyBjbGFzcwpudW1fdmFycyA8LSBjKCJBR0UiLCAiQ1JPV0ZMWSIsICJUVU1PUl9TSVpFIiwgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLCAiRFhfUkFEX1NUQVJURURfREFZUyIsICAiUkFEX1JFR0lPTkFMX0RPU0VfQ0dZIiwKICAgICAgICAgICAgICAiUkFEX0JPT1NUX0RPU0VfQ0dZIiwgIlJBRF9FTEFQU0VEX1JYX0RBWVMiLCAiRFhfU1lTVEVNSUNfU1RBUlRFRF9EQVlTIiwgIkRYX0NIRU1PX1NUQVJURURfREFZUyIsIAogICAgICAgICAgICAgICJEWF9IT1JNT05FX1NUQVJURURfREFZUyIsICJEWF9PVEhFUl9TVEFSVEVEX0RBWVMiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwKICAgICAgICAgICAgICAiUkFEX05VTV9UUkVBVF9WT0wiKQoKZGF0W251bV92YXJzXSA8LSBsYXBwbHkoZGF0W251bV92YXJzXSwgYXMubnVtZXJpYykKCgojIGNvbnZlcnQgZmFjdG9yIHZhcmlhYmxlcyBmcm9tIGNoYXJhY3RlciBjbGFzcyB0byBmYWN0b3IgY2xhc3MKdmFycyA8LSBuYW1lcyhkYXQpCmZhY3RfdmFycyA8LSB2YXJzWyEodmFycyAlaW4lIG51bV92YXJzKV0gIyBiYXNpY2FsbHkgYWxsIG9mIHRoZSBub24tbnVtZXJpY3MKCmRhdFtmYWN0X3ZhcnNdIDwtIGxhcHBseShkYXRbZmFjdF92YXJzXSwgYXMuY2hhcmFjdGVyKQpkYXRbZmFjdF92YXJzXSA8LSBsYXBwbHkoZGF0W2ZhY3RfdmFyc10sIGFzLmZhY3RvcikKCmRhdCA8LSBkYXQgJT4lCiAgICAgICAgbXV0YXRlKEZBQ0lMSVRZX1RZUEVfRiA9IGZjdF9yZWNvZGUoRkFDSUxJVFlfVFlQRV9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tbXVuaXR5IENhbmNlciBQcm9ncmFtIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcHJlaGVuc2l2ZSBDb21tIENhIFByb2dyYW0iID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY2FkZW1pYy9SZXNlYXJjaCBQcm9ncmFtIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZWdyYXRlZCBOZXR3b3JrIENhIFByb2dyYW0iID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfTE9DQVRJT05fRiA9IGZjdF9yZWNvZGUoRkFDSUxJVFlfTE9DQVRJT05fQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ldyBFbmdsYW5kIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlkZGxlIEF0bGFudGljIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291dGggQXRsYW50aWMiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXN0IE5vcnRoIENlbnRyYWwiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXN0IFNvdXRoIENlbnRyYWwiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0IE5vcnRoIENlbnRyYWwiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0IFNvdXRoIENlbnRyYWwiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3VudGFpbiIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhY2lmaWMiID0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdXQgb2YgVVMiID0gIjAiKSkgJT4lCiAgICAgICAgbXV0YXRlKEZBQ0lMSVRZX0dFT0dSQVBIWSA9IGZjdF9jb2xsYXBzZShGQUNJTElUWV9MT0NBVElPTl9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3J0aGVhc3QiID0gYygiMSIsICIyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291dGgiID0gYygiMyIsICI3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlkd2VzdCIgPSBjKCI0IiwgIjUiLCAiNiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QiID0gYygiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoQUdFX0YgPSBjdXQoQUdFLCBjKDAsIDU0LCA2NCwgNzQsIDEwMCkpKSAlPiUKICAgICAgICBtdXRhdGUoQUdFXzQwID0gY3V0KEFHRSwgYygwLCA0MCwgMTAwKSkpICU+JQogICAgICAgIG11dGF0ZShTRVhfRiA9IGZjdF9yZWNvZGUoU0VYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWxlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmVtYWxlIiA9ICIyIikpICU+JQogICAgICAgIG11dGF0ZShSQUNFX0YgPSBmY3RfY29sbGFwc2UoUkFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpdGUiID0gYygiMDEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxhY2siID0gYygiMDIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXNpYW4iID0gYygiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMTAiLCAiMTEiLCAiMTIiLCAiMTMiLCAiMTQiLCAiMTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxNiIsICIxNyIsICIyMCIsICIyMSIsICIyMiIsICIyNSIsICIyNiIsICIyNyIsICIyOCIsICIzMCIsICIzMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjMyIiwgIjk2IiwgIjk3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyL1VuayIgPSBjKCIwMyIsICI5OCIsICI5OSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1BBTklDID0gZmN0X2NvbGxhcHNlKFNQQU5JU0hfSElTUEFOSUNfT1JJR0lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjEiLCAiMiIsICIzIiwgIjQiLCAiNSIsICI2IiwgIjciLCAiOCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSBjKCI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSU5TVVJBTkNFX0YgPSBmY3RfcmVjb2RlKElOU1VSQU5DRV9TVEFUVVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcml2YXRlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVkaWNhaWQiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZWRpY2FyZSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIEdvdmVybm1lbnQiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShJTlNVUkFOQ0VfRiA9IGZjdF9yZWxldmVsKElOU1VSQU5DRV9GLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcml2YXRlIikpICU+JQogICAgICAgIG11dGF0ZShJTkNPTUVfRiA9IGZjdF9yZWNvZGUoTUVEX0lOQ19RVUFSXzEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMZXNzIHRoYW4gJDM4LDAwMCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQzOCwwMDAgLSAkNDcsOTk5IiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDQ4LDAwMCAtICQ2Miw5OTkiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkNjMsMDAwICsiID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKEVEVUNBVElPTl9GID0gZmN0X3JlY29kZShOT19IU0RfUVVBUl8xMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMSUgb3IgbW9yZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTMgLSAyMC45JSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNyAtIDEyLjklIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMZXNzIHRoYW4gNyUiID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKFVfUl9GID0gZmN0X2NvbGxhcHNlKFVSX0NEXzEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWV0cm8iID0gYygiMSIsICIyIiwgIjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVyYmFuIiA9IGMoIjQiLCAiNSIsICI2IiwgIjciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJ1cmFsIiA9IGMoIjgiLCAiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKENMQVNTX09GX0NBU0VfRiA9IGZjdF9jb2xsYXBzZShDTEFTU19PRl9DQVNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsX1BhcnRfUHJpbSA9IGMoIjEwIiwgIjExIiwgIjEyIiwgIjEzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxNCIsICIyMCIsICIyMSIsICIyMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJfRmFjaWxpdHkgPSBjKCIwMCIpKSkgJT4lCiAgICAgICAgbXV0YXRlKEdSQURFX0YgPSBmY3RfcmVjb2RlKEdSQURFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIEk6IFdlbGwgRGlmZiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSUk6IE1vZCBEaWZmIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJSUk6IFBvb3IgRGlmZiIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSVY6IFVuZGlmZi9BbmFwbGFzdGljIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOQS9Vbmtvd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1RPTE9HWV9GID0gZmN0X2luZnJlcShISVNUT0xPR1kpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0YgPSBmYWN0b3IoSElTVE9MT0dZX0YpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0ZfTElNID0gZmN0X2x1bXAoSElTVE9MT0dZX0YsIHByb3AgPSAwLjA1KSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1QgPSBmY3RfcmVjb2RlKFROTV9DTElOX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9UID0gZmN0X3JlbGV2ZWwoVE5NX0NMSU5fVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9OID0gZmN0X3JlY29kZShUTk1fQ0xJTl9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fTSA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1QgPSBmY3RfcmVjb2RlKFROTV9QQVRIX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9UID0gZmN0X3JlbGV2ZWwoVE5NX1BBVEhfVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9OID0gZmN0X3JlY29kZShUTk1fUEFUSF9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfTSA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1NUQUdFX0dST1VQID0gZmN0X3JlY29kZShUTk1fQ0xJTl9TVEFHRV9HUk9VUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1NUQUdFX0dST1VQID0gZmN0X3JlY29kZShUTk1fUEFUSF9TVEFHRV9HUk9VUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1BUkdJTlMgPSBmY3RfcmVjb2RlKFJYX1NVTU1fU1VSR0lDQUxfTUFSR0lOUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFJlc2lkdWFsIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlc2lkdWFsLCBOT1MiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWljcm9zY29waWMgUmVzaWQiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFjcm9zY29waWMgUmVzaWQiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IGV2YWx1YWJsZSIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1BUkdJTlNfWU4gPSBmY3RfY29sbGFwc2UoUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMSIsICIyIiwgIjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnL1Vuay9OQSIgPSBjKCI3IiwgIjgiLCAiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFJFQURNX0hPU1BfMzBfREFZU19GID0gZmN0X3JlY29kZShSRUFETV9IT1NQXzMwX0RBWVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9fU3VyZ19vcl9Ob19SZWFkbWl0IiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbnBsYW5fUmVhZG1pdF9TYW1lIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFuX1JlYWRtaXRfU2FtZSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxhblVucGxhbl9TYW1lIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI0IikpICU+JQogICAgICAgIG11dGF0ZShSWF9TVU1NX1JBRElBVElPTl9GID0gZmN0X3JlY29kZShSWF9TVU1NX1JBRElBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmVhbSBSYWRpYXRpb24iID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaW9hY3RpdmUgSW1wbGFudHMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaW9pc290b3BlcyIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZWFtICsgSW1wIG9yIElzb3RvcGVzIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZGlhdGlvbiwgTk9TIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFBVRl8zMF9EQVlfTU9SVF9DRF9GID0gZmN0X3JlY29kZShQVUZfMzBfREFZX01PUlRfQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxpdmVfMzAiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYWRfMzAiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFBVRl85MF9EQVlfTU9SVF9DRF9GID0gZmN0X3JlY29kZShQVUZfOTBfREFZX01PUlRfQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxpdmVfOTAiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYWRfOTAiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKExZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YgPSBmY3RfcmVjb2RlKExZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmVnX0x5bXBoVmFzY19JbnYiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9zX0x1bXBoVmFzY19JbnYiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiA9IGZjdF9yZWNvZGUoUlhfSE9TUF9TVVJHX0FQUFJfMjAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9fU3VyZyIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvYm90X0Fzc2lzdCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvYm90X3RvX09wZW4iID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbmRvX0xhcCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVuZG9fTGFwX3RvX09wZW4iID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuX1Vua25vd24iID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShBbGwgPSAiQWxsIikgJT4lCiAgICAgICAgbXV0YXRlKEFsbCA9IGZhY3RvcihBbGwpKSAlPiUKICAgICAgICBtdXRhdGUoUkVBU09OX0ZPUl9OT19TVVJHRVJZX0YgPSBmY3RfcmVjb2RlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHBlcmZvcm1lZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBub3QgcmVjb21tZW5kZWQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcgZHVlIHRvIHB0IGZhY3RvcnMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcsIHB0IGRpZWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcmVjLCBub3QgZG9uZSIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIHB0IHJlZnVzZWQiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcmVjLCB1bmsgaWYgZG9uZSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGlmZWxzZShSRUFTT05fRk9SX05PX1NVUkdFUlkgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSRUFTT05fRk9SX05PX1NVUkdFUlkgPT0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19URiA9IGNhc2Vfd2hlbihTVVJHRVJZX1lOID09ICJZZXMiIH4gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVJHRVJZX1lOID09ICJObyIgfiBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkEpKSAgJT4lCiAgICAgICAgbXV0YXRlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OX0YgPSBmY3RfcmVjb2RlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBwZXJmb3JtZWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBub3QgcmVjb21tZW5kZWQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFJhZCBkdWUgdG8gcHQgZmFjdG9ycyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmFkLCBwdCBkaWVkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCBub3QgZG9uZSIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHJlYywgcHQgcmVmdXNlZCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHJlYywgdW5rIGlmIGRvbmUiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGlmZWxzZShSRUFTT05fRk9SX05PX1JBRElBVElPTiA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OID09ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdSQURfU0VRX0YgPSBmY3RfcmVjb2RlKFJYX1NVTU1fU1VSR1JBRF9TRVEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIG9yIFN1cmcgb3IgUmFkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgU3VyZyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIGJlZm9yZSBSYWQiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZyIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRyYW9wIFJhZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRyYW9wIFJhZCBwbHVzIG90aGVyIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUSA9IGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkFESUFUSU9OX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUcmVhdG1lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIiKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRID0gZmN0X3JlbGV2ZWwoU1VSR19SQURfU0VRLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBBbG9uZSIpKSAlPiUKICAgICAgICBtdXRhdGUoQ0hFTU9fWU4gPSBmY3RfY29sbGFwc2UoUlhfU1VNTV9DSEVNTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAwIiwgIjgyIiwgIjg1IiwgIjg2IiwgIjg3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMDEiLCAiMDIiLCAiMDMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVrbiIgPSBjKCI4OCIsICI5OSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKElNTVVOT19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX0lNTVVOT1RIRVJBUFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwMCIsICI4MiIsICI4NSIsICI4NiIsICI4NyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjAxIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iID0gYygiODgiLCAiOTkiKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVFfQyA9IGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcsIE5vIHJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkLCBObyBTdXJnLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gU3VyZywgTm8gUmFkLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZywgTm8gcmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkFESUFUSU9OX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQsIE5vIFN1cmcsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBTdXJnLCBObyBSYWQsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjIiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMyIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmcsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIikpKSkpKSkpKSkpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUV9DID0gZmN0X2luZnJlcShTVVJHX1JBRF9TRVFfQykpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBhcy5udW1lcmljKFRVTU9SX1NJWkUpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gaWZlbHNlKFRfU0laRSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUdW1vciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+IDAgJiBUX1NJWkUgPCAxMCB8IFRfU0laRSA9PSA5OTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8IDEgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDEwICYgVF9TSVpFIDwgMjAgfCBUX1NJWkUgPT0gOTkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEtMiBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDIwICYgVF9TSVpFIDwgMzAgfCBUX1NJWkUgPT0gOTkzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyLTMgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gMzAgJiBUX1NJWkUgPCA0MCB8IFRfU0laRSA9PSA5OTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzLTQgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDQwICYgVF9TSVpFIDwgNTAgfCBUX1NJWkUgPT0gOTk1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQtNSBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDUwICYgVF9TSVpFIDwgNjAgfCBUX1NJWkUgPT0gOTk2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI1LTYgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gNjAgJiBUX1NJWkUgPD0gOTg3IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUX1NJWkUgPT0gOTgwIHwgVF9TSVpFID09IDk4OSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9TSVpFID09IDk5NywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPjYgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPT0gOTg4IHwgVF9TSVpFID09IDk5OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5BX3VuayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWNyb3Njb3BpYyBmb2N1cyIpKSkpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBmYWN0b3IoVF9TSVpFKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGZjdF9yZWxldmVsKFRfU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUdW1vciIsICJNaWNyb3Njb3BpYyBmb2N1cyIsICI8IDEgY20iLCAiMS0yIGNtIiwgIjItMyBjbSIsICIzLTQgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNC01IGNtIiwgIjUtNiBjbSIsICI+NiBjbSIsICJOQV91bmsiKSkgJT4lCiAgICAgICAgbXV0YXRlKG1ldHNfYXRfZHggPSBjYXNlX3doZW4oQ1NfTUVUU19EWF9MVU5HID09ICIxIiB+ICJMdW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0JPTkUgPT0gIjEiIH4gIkJvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTX01FVFNfRFhfQlJBSU4gPT0gIjEiIH4gIkJyYWluIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0xJVkVSID09ICIxIiB+ICJMaXZlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICJOb25lL090aGVyL1Vuay9OQSIpKSAlPiUKICAgICAgICBtdXRhdGUoTUVESUNBSURfRVhQTl9DT0RFID0gZmN0X3JlY29kZShNRURJQ0FJRF9FWFBOX0NPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbi1FeHBhbnNpb24gU3RhdGUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKYW4gMjAxNCBFeHBhbnNpb24gU3RhdGVzIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMYXRlIEV4cGFuc2lvbiBTdGF0ZXMgKD4gSmFuIDIwMTQpIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VwcHJlc3NlZCBmb3IgQWdlcyAwIC0gMzkiID0gIjkiKSkgICU+JQogICAgICAgIG11dGF0ZShFWFBOX0dST1VQID0gIGNhc2Vfd2hlbihNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDE0IiwgIjIwMTUiKSB+ICJQb3N0LUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMDkiLCAiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIpIH4gIlByZS1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiLCAiMjAxNCIsICIyMDE1IikgfiAiUG9zdC1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDA0IiwgIjIwMDUiLCAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAiMjAwOSIpIH4gIlByZS1FeHBhbnNpb24iLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTm9uLUV4cGFuc2lvbiBTdGF0ZSIpIH4gIlByZS1FeHBhbnNpb24iLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIpIH4gIlByZS1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgJWluJSBjKCJMYXRlIEV4cGFuc2lvbiBTdGF0ZXMgKD4gSmFuIDIwMTQpIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxNCIsICIyMDE1IikgfiAiRXhjbHVkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgPT0gIlN1cHByZXNzZWQgZm9yIEFnZXMgMCAtIDM5IiB+ICJFeGNsdWRlIikpICU+JQogIAogIG11dGF0ZShwcmVfMjAxNCA9IFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMDkiLCAiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIpKSAlPiUKICAKICBtdXRhdGUobWV0c19hdF9keF9GID0gaWZlbHNlKG1ldHNfYXRfZHggPT0gIk5vbmUvT3RoZXIvVW5rL05BIiwgRkFMU0UsIFRSVUUpKSAlPiUgCiAgCiAgbXV0YXRlKFR4X1lOID0gaWZlbHNlKFNVUkdfUkFEX1NFUSA9PSAiTm8gVHJlYXRtZW50IiAmIENIRU1PX1lOID09ICJObyIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICBJTU1VTk9fWU4gPT0gIk5vIiwgRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoQ0hFTU9fWU4gPT0gIlVrbiIsIE5BLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpKSkKCmZhY3RfdmFyc18yIDwtIGMoIkZBQ0lMSVRZX1RZUEVfRiIsICJGQUNJTElUWV9MT0NBVElPTl9GIiwgIkFHRV9GIiwgIlNFWF9GIiwgIlJBQ0VfRiIsCiAgICAgICAgICAgICAgICAgIkhJU1BBTklDIiwgIklOU1VSQU5DRV9GIiwgIklOQ09NRV9GIiwgIkVEVUNBVElPTl9GIiwgIlVfUl9GIiwKICAgICAgICAgICAgICAgICAiQ0RDQ19UT1RBTF9CRVNUIiwgIkNMQVNTX09GX0NBU0VfRiIsICJZRUFSX09GX0RJQUdOT1NJUyIsICJQUklNQVJZX1NJVEUiLCAiSElTVE9MT0dZIiwKICAgICAgICAgICAgICAgICAiQkVIQVZJT1IiLCAiR1JBREVfRiIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwKICAgICAgICAgICAgICAgICAiTUFSR0lOUyIsICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsICJSWF9IT1NQX1NVUkdfQVBQUl8yMDEwX0YiLCAibWV0c19hdF9keCIpCgoKZGF0IDwtIGRhdCAlPiUKICAgICAgICBtdXRhdGVfYXQoZmFjdF92YXJzXzIsIGZ1bnMoZmFjdG9yKC4pKSkKCmBgYAoKCiMgRXh0cmFjdCBEYXRhIG9mIEludGVyZXN0CgpgYGB7cn0KCgojIE5vbi1Ib2Rna2luIEx5bXBob21hIFNpdGVzCnNpdGVfY29kZSA8LSBjKCAKI2FkZGl0aW9uYWwgc2l0ZXMKCiAjbGlwICAKICAiQzAwMCIsICJDMDAxIiwgIkMwMDIiLCAiQzAwMyIsICJDMDA0IiwgIkMwMDUiLCJDMDA2IiwgIkMwMDgiLCJDMDA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3NraW4vbWVsYW5vbWEKICAiQzQ0MCIsICJDNDQxIiwgIkM0NDIiLCAiQzQ0MyIsICJDNDQ0IiwgIkM0NDUiLCAiQzQ0NiIsICJDNDQ3IiwgIkM0NDgiLCAiQzQ0OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogI2JyZWFzdCAtIG5pcHBsZQogICJDNTAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiN2YWdpbmEvdnVsdmEKICAiQzUxMCIsICJDNTExIiwgIkM1MTIiLCAiQzUxOCIsICJDNTE5IiwgIkM1MjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3BlbmlzCiAiQzYwMCIsICJDNjAxIiwgIkM2MDIiLCAiQzYwOCIsICJDNjA5IiwgIkM2MzkiKQoKI215Y29zaXMgZnVuZ29pZGVzLCBTZXphcnkgc3luZHJvbWUsIHN1YmN1dGFuZW91cyBwYW5uaWN1bGl0aXMtbGlrZSBULWNlbGwgbHltcGhvbWEsCiNjdXRhbmVvdXMgVC1jZWxsIGx5bXBob21hLCBOT1MsIHByaW1hcnkgY3V0YW5lb3VzIENEMzArVC1jZWxsIGx5bXBob21hLCAKI05LL1QtY2VsbCBseW1waG9tYSwgcHJpbWFyeSBjdXRhbmVvdXMgZ2FtbWEtZGVsdGEgVC1jZWxsIGx5bXBob21hLCAKI2FuZCBibGFzdGljIE5LIGNlbGwgbHltcGhvbWEsIHJlc3BlY3RpdmVseQoKIyI5NzAwIiA9IE15Y29zaXMgRnVuZ29pZGVzCiAgIyBwYWdldG9pZCByZXRpY3Vsb3NpcwoKIyI5NzAxIiA9IFNlemFyeSBTeW5kcm9tZQogICMgU2V6YXJ5IGRpc2Vhc2UKCiMiOTcwOCIgPSBTdWJjdXRhbmVvdXMgcGFubmljdWxpdGlzbGlrZSBULWNlbGwgbHltcGhvbWEKCiMiOTcwOSIgPSBDdXRhbmVvdXMgVC1jZWxsIGx5bXBob21hLCBOT1MgCiAgIyBDdXRhbmVvdXMgbHltcGhvbWEsIE5PUyAoQzQ0Ll8pOyBQcmltYXJ5IGN1dGFuZW91cyBDRDQtcG9zaXRpdmUgc21hbGwvbWVkaXVtCiAgIyBULWNlbGwgbHltcGhvbWE7IFByaW1hcnkgY3V0YW5lb3VzIENEOC1wb3NpdGl2ZSBhZ2dyZXNzaXZlCiAgIyBlcGlkZXJtb3Ryb3BpYyBjeXRvdG94aWMgVC1jZWxsIGx5bXBob21hCgojIjk3MTgiID0gUHJpbWFyeSBjdXRhbmVvdXMgQ0QzMCsgVC1jZWxsIGx5bXBob3Byb2xpZmVyYXRpdmUgZGlzb3JkZXIgCiAgIyBMeW1waG9tYXRvaWQgcGFwdWxvc2lzIChDNDQuXyksIFByaW1hcnkgY3V0YW5lb3VzIGFuYXBsYXN0aWMgbGFyZ2UgY2VsbCwKICAjIGx5bXBob21hIChDNDQuXyksIFByaW1hcnkgY3V0YW5lb3VzIENEMzArIGxhcmdlIFQtY2VsbCBseW1waG9tYSAoQzQ0Ll8pCgoKIyI5NzI2IiA9IFByaW1hcnkgY3V0YW5lb3VzIGdhbW1hLWRlbHRhIFQtY2VsbCBseW1waG9tYQoKaGlzdG9fY29kZSA8LSBjKCI5NzAxIikKCmJlaGF2aW9yX2NvZGUgPC0gYygiMyIpCgpkYXRhIDwtIGRhdCAlPiUKICAgICAgICBmaWx0ZXIoQkVIQVZJT1IgJWluJSBiZWhhdmlvcl9jb2RlKSAlPiUKICAgICAgICBmaWx0ZXIoUFJJTUFSWV9TSVRFICVpbiUgc2l0ZV9jb2RlKSAlPiUKICAgICAgICBmaWx0ZXIoSElTVE9MT0dZICVpbiUgaGlzdG9fY29kZSkgJT4lCiAgICAgICAgI2ZpbHRlcihBR0UgPj0gMTgpICU+JQogICAgICAgIGZpbHRlcihpcy5uYShQVUZfVklUQUxfU1RBVFVTKSA9PSBGQUxTRSkgJT4lCiAgICAgICAgZmlsdGVyKGlzLm5hKERYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUykgPT0gRkFMU0UpICAlPiUKICAgICAgICBmaWx0ZXIoU0VRVUVOQ0VfTlVNQkVSID09ICIwMCIpIAoKI2ZpbGVfcGF0aCA8LSBjKCIvVXNlcnMvYmVhc3RhdGxpZmUvR29vZ2xlIERyaXZlL1Blbm4vUmVzZWFyY2gvQmFyYmllcmkvTkNEQiIpCiNzYXZlKGRhdGEsCiMgICAgICBmaWxlID0gcGFzdGUwKGZpbGVfcGF0aCwgIi9DVENMX2RhdGEuUmRhIikpCmBgYAoKYGBge3IgbG9hZERhdGF9CiNsb2FkKCJNRl9kYXRhLlJkYSIpCmBgYAoKCkRhdGEgaW5jbHVkaW5nIHNraW4gdHVtb3JzIHdhcyBvYnRhaW5lZCBmcm9tIHRoZSBOQ0JEIG9uIE9jdG9iZXIgNywgMjAxOS4gQ2FzZXMgdGhhdCB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgYW5hbHlzaXMgd2VyZSB0aG9zZSB3aXRoOgoKMS4gU2l0ZSBjb2RlczogYHIgc2l0ZV9jb2RlYAoyLiBIaXN0b2xvZ3kgY29kZXM6IGByIGhpc3RvX2NvZGVgCjMuIEJlaGF2aW9yIGNvZGVzOiBgciBiZWhhdmlvcl9jb2RlYAoKClBhdGllbnRzIHdlcmUgZXhjbHVkZWQgaWYgdGhleSBkaWRuJ3QgaGF2ZSB2YWx1ZXMgZm9yIGVpdGhlciBmb2xsb3cgdXAgb3Igdml0YWwgc3RhdHVzLgoKUGF0aWVudHMgd2VyZSBleGNsdWRlZCBpZiB0aGV5IGhhZCBzdXJnZXJ5IHRvIGEgZGlzdGFudCBzaXRlIHVzaW5nIGBSWF9TVU1NX1NVUkdfT1RIX1JFR0RJU2AuIFRoaXMgd2FzIGRvbmUgdG8gYXZvaWQgY29uZm91bmRpbmcgb2YgZGlmZmVyZW50IHN1cmdpY2FsIHByb2NlZHVyZXMuIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gc3VyZ2VyeSBhdCB0aGUgcHJpbWFyeSBzaXRlLiBUaGVzZSBkaXN0YW50IHNpdGUgc3VyZ2VyaWVzIHdlcmUgYmVpbmcgY291bnRlZCBpbiB0aGUgc3VyZ2VyeS9yYWRpYXRpb24gc2VxdWVuY2UgYW5kIHRodXMgdG8gc2ltcGxpZnkgYW5hbHlzaXMgdGhleSB3ZXJlIHJlbW92ZWQuIAoKYGBge3J9CgpkYXRhICU+JQogICAgICAgIENyZWF0ZVRhYmxlT25lKGRhdGEgPSAuLAogICAgICAgICAgICAgICAgICAgICB2YXJzID0gYygiUlhfU1VNTV9TVVJHX09USF9SRUdESVMiKSwKICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZU5BID0gVFJVRSkgJT4lCiAgICAgICAgcHJpbnQoLiwKICAgICAgICAgICAgICBzaG93QWxsTGV2ZWxzID0gVFJVRSkKCmRhdGEgPC0gZGF0YSAlPiUKICAgICAgICBmaWx0ZXIoUlhfU1VNTV9TVVJHX09USF9SRUdESVMgPT0gIjAiKSAKYGBgCgoKUmFjZSB3YXMgZ3JvdXBlZCBhcyB3aGl0ZSwgYmxhY2ssIGFzaWFuLCBvdGhlci91bmtub3duClN0YWdlIHdhcyBncm91cGVkIGludG8gMCwgSSwgSUksIElJSSwgSVYsIE5BX1Vua25vd24sIHN0YWdlIDAgd2FzIHJlbW92ZWQKV2hldGhlciBzdXJnZXJ5IHdhcyBwZXJmb3JtZWQgd2FzIGJhc2VkIG9uIHRoZSBgUkVBU09OX0ZPUl9OT19TVVJHRVJZYCB2YXJpYWJsZS4gVGhlIGBTVVJHRVJZX1lOYCB2YXJpYWJsZSB3YXMgY2xhc3NpZmllZCBhcyAnWWVzJywgJ05vJywgb3IgJ1Vua25vd24nLgoKCldoZXRoZXIgcmFkaWF0aW9uIHdhcyBwZXJmb3JtZWQgd2FzIGJhc2VkIG9uIHRoZSBgUkVBU09OX0ZPUl9OT19SQURJQVRJT05gIHZhcmlhYmxlLiBUaGUgYFJBRElBVElPTl9ZTmAgdmFyaWFibGUgd2FzIGNsYXNzaWZpZWQgYXMgJ1llcycsICdObycsIG9yICdVbmtub3duJy4KCgoKI1RhYmxlIG9mIHZhcmlhYmxlcyBmb3IgYWxsIGNhc2VzOgoKYGBge3J9CmRhdGEgPC0gZGF0YSAlPiUgZHJvcGxldmVscygpCgpwX3RhYmxlKGRhdGEsCiAgICAgICAgdmFycyA9IGMoIkZBQ0lMSVRZX1RZUEVfRiIsICJGQUNJTElUWV9MT0NBVElPTl9GIiwgIkZBQ0lMSVRZX0dFT0dSQVBIWSIsICAiQUdFIiwgIkFHRV9GIiwgIkFHRV80MCIsCiAgICAgICAgICAgICAgICAgIlNFWF9GIiwgIlJBQ0VfRiIsICJISVNQQU5JQyIsICJJTlNVUkFOQ0VfRiIsIAogICAgICAgICAgICAgICAgICJJTkNPTUVfRiIsICJFRFVDQVRJT05fRiIsICJVX1JfRiIsICJDUk9XRkxZIiwgIkNEQ0NfVE9UQUxfQkVTVCIsCiAgICAgICAgICAgICAgICAgIlNJVEVfVEVYVCIsICAiSElTVE9MT0dZIiwgIkJFSEFWSU9SIiwgIkdSQURFX0YiLCAKICAgICAgICAgICAgICAgICAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiVE5NX0NMSU5fVCIsICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLAogICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsICJUTk1fUEFUSF9UIiwgIlROTV9QQVRIX04iLCAiVE5NX1BBVEhfTSIsCiAgICAgICAgICAgICAgICAgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgICAgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwgIk1BUkdJTlMiLCAiTUFSR0lOU19ZTiIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwKICAgICAgICAgICAgICAgICAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCAiUlhfU1VNTV9SQURJQVRJT05fRiIsICJQVUZfMzBfREFZX01PUlRfQ0RfRiIsCiAgICAgICAgICAgICAgICAgIlBVRl85MF9EQVlfTU9SVF9DRF9GIiwgIkRYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyIsIAogICAgICAgICAgICAgICAgICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsICJTVVJHX1JBRF9TRVEiLAogICAgICAgICAgICAgICAgICJTVVJHX1JBRF9TRVFfQyIsICJTVVJHRVJZX1lOIiwgIlJBRElBVElPTl9ZTiIsICJDSEVNT19ZTiIsICJJTU1VTk9fWU4iLCAiVHhfWU4iLCAibWV0c19hdF9keCIsCiAgICAgICAgICAgICAgICAgIk1FRElDQUlEX0VYUE5fQ09ERSIsICJFWFBOX0dST1VQIiwgIllFQVJfT0ZfRElBR05PU0lTIikpCmBgYAoKCiNLYXBsYW4gTWVpZXIgQW5hbHlzaXMKCgojI0FsbAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQWxsIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgVHlwZQpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJGQUNJTElUWV9UWVBFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBMb2NhdGlvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfTE9DQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IEdlb2dyYXBoeQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfR0VPR1JBUEhZIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQWdlIEdyb3VwCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJBR0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0FnZSBHcm91cApgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJBR0VfNDAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNHZW5kZXIKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNFWF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUkFDRV9GCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSQUNFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNIaXNwYW5pYwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiSElTUEFOSUMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNJbnN1cmFuY2UgU3RhdHVzCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJJTlNVUkFOQ0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNJbmNvbWUKCmBgYHtyfQpjbGFzcyhkYXRhJElOQ09NRV9GKQp1bmlfdmFyKHRlc3RfdmFyID0gIklOQ09NRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRWR1Y2F0aW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJFRFVDQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1VyYmFuL1J1cmFsCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJVX1JfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsYXNzICh0cmVhdG1lbnQgYXQgcGVyZm9ybWluZyBmYWNpbGl0eSkKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNMQVNTX09GX0NBU0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1llYXIKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIllFQVJfT0ZfRElBR05PU0lTIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUHJpbWFyeSBTaXRlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTSVRFX1RFWFQiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjSGlzdG9sb2d5CgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiSElTVE9MT0dZX0ZfTElNIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQmVoYXZpb3IKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkJFSEFWSU9SIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjR3JhZGUKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJHUkFERV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgVCBTdGFnZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsaW5pY2FsIE4gU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDbGluaWNhbCBNIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fQ0xJTl9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgU3RhZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX1NUQUdFX0dST1VQIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBUIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9UIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBOIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9OIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBNIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBTdGFnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIk1BUkdJTlMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zIFllcy9ObwpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiTUFSR0lOU19ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojIzMwIERheSBSZWFkbWlzc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gVHlwZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfU1VNTV9SQURJQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNMeW1waG92YXNjdWxhciBJbnZhc2lvbgoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNFbmRvc2NvcGljL1JvYm90aWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1N1cmdlcnkgUmFkaWF0aW9uIFNlcXVlbmNlIAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR19SQURfU0VRIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNVUkdFUllfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gWWVzL05vCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSQURJQVRJT05fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDaGVtbyBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNIRU1PX1lOIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI1RyZWF0bWVudCBZZXMvTm8KYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVHhfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNZXRhc3Rhc2VzIGF0IER4CmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIm1ldHNfYXRfZHhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjVHVtb3IgU2l6ZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiVF9TSVpFIiwgZGF0YV9pbXAgPSBkYXRhKSAtLT4KPCEtLSBgYGAgLS0+CgojVHVtb3Igc3BlY2lmaWMgVmFyaWFibGVzCgoKIyMjTm9kZSBTaXplCgoKI0NveCBQcm9wb3J0aW9uYWwgSGF6YXJkIFJhdGlvCgojI01vZGVsICMxCgojIyNGdWxsIGFuYWx5c2lzCgpgYGB7cn0KbW9kZWxfb25lIDwtIGNveHBoKFN1cnYoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTLCBQVUZfVklUQUxfU1RBVFVTID09IDApCiAgICAgICAgICAgICAgICAgICAgIH4gU1VSR19SQURfU0VRICsgSU5TVVJBTkNFX0YgKyBBR0UgKyBTRVhfRiArIFJBQ0VfRiArIElOQ09NRV9GICsgVV9SX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GLAogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSkKbW9kZWxfb25lICU+JSBzdW1tYXJ5KCkKCgpgYGAKCiMjI1N1bW1hcnkgb2YgTW9kZWwKCmBgYHtyfQptb2RlbF9vbmUgJT4lCiAgICAgICAgdGlkeSguLCBleHBvbmVudGlhdGUgPSBUUlVFKSAlPiUKICAgICAgICBzZWxlY3QodGVybSwgZXN0aW1hdGUsIGNvbmYubG93LCBjb25mLmhpZ2gsIHAudmFsdWUpICU+JQogICAgICAgIHJlbmFtZShWYXJpYWJsZSA9IHRlcm0sCiAgICAgICAgICAgICAgIEhhemFyZF9SYXRpbyA9IGVzdGltYXRlKSAlPiUKICAgICAgICB0YmxfZGYgJT4lCiAgICAgICAgcHJpbnQobiA9IG5yb3coLikpCgpgYGAKCiMjIExpbmVhciBSZWdyZXNzaW9uIApgYGB7cn0KCiNvbmx5IGluY2x1ZGUgcm93cyB3aXRoIGtub3duIHRyZWF0bWVudCBpbmZvcm1hdGlvbiwgbiA9IDgyCmRhdGEyIDwtIGRhdGEgJT4lIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iICYgUkFESUFUSU9OX1lOICE9ICJVa24iCiAgICAgICAgICAgICAgICAgICAgICAgICAmIENIRU1PX1lOICE9ICJVa24iKQoKIyBpbmNsdWRlIG9ubHkgdmFyaWFibGVzIHdpdGggZGF0YSBhdmFpbGFibGUgZm9yIGF0IGxlYXN0IDc1JSBvZiBjYXNlcyAKIyBmcm9tIHRoZSBmb2xsb3dpbmcgc2V0IG9mIHZhcmlhYmxlcyBvZiBpbnRlcmVzdDoKCiMjIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0dFT0dSQVBIWSArIENST1dGTFkgKyAKIyMgICAgICAgICAgICAgICAgIERYX1NUQUdJTkdfUFJPQ19EQVlTICsgCiMjICAgICAgICAgICAgICAgICBDSEVNT19ZTiArIFJBRElBVElPTl9ZTiArIFNVUkdFUllfWU4gKyBJTU1VTk9fWU4gKwojIyAgICAgICAgICAgICAgICAgQUdFICsgU0VYX0YgKyBSQUNFX0YgKyBISVNQQU5JQyArIElOU1VSQU5DRV9GICsgSU5DT01FX0YgKyAKIyMgICAgICAgICAgICAgICAgIEVEVUNBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMgKyBTSVRFX1RFWFQgKyBHUkFERV9GCgpsZW5ndGgod2hpY2goaXMubmEoZGF0YTIkR1JBREVfRikpKSAvIG5yb3coZGF0YTIpCgojIGV4Y2x1ZGVkIHRoZSBmb2xsb3dpbmcgaW4gdGhpcyBhbmFseXNpcyBkdWUgdG8gbWlzc2luZyBkYXRhOiAKIyAgRFhfU1RBR0lOR19QUk9DX0RBWVMKCiMgYmVjYXVzZSBHUkFERV9GIGlzIGluY2x1ZGVkIGluIHRoaXMgbW9kZWwsIGV4Y2x1ZGVkIHVua25vd25zCmRhdGEzIDwtIGRhdGEyICU+JSBmaWx0ZXIoR1JBREVfRiAhPSAiTkEvVW5rb3duIikKCmZpdF9zdXJ2IDwtIGxtKERYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyB+CiAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArCiAgICAgICAgICAgICAgICAgU1VSR0VSWV9ZTiArIAogICAgICAgICAgICAgICAgIEFHRV9GICsgIElOQ09NRV9GICsgCiAgICAgICAgICAgICAgICAgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUyArIFNJVEVfVEVYVCArIEdSQURFX0YsCiAgIGRhdGEgPSBkYXRhMykKCnN1bW1hcnkoZml0X3N1cnYpICMgUl4yID0gMC4zMDI1ICwgcCA9IDIuNzEyZS0wOAoKIyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyB3ZXJlIGV4Y2x1ZGVkIHRvIAojIGltcHJvdmUgdGhlIFItc3F1YXJlZCBvZiB0aGUgcmVncmVzc2lvbiAoaW5pdGlhbGx5IFJeMiA9ICk6CiMgSElTUEFOSUMgKyBJTlNVUkFOQ0VfRiArIFNFWF9GICsgSU1NVU5PX1lOICsgQ0hFTU9fWU4gKyBSQUNFX0YKYGBgCgojIFByZWRpY3Rpb24gTG9naXN0aWMgUmVncmVzc2lvbiBNb2RlbHMKCiMjIFN1cmdlcnkKYGBge3J9Cgpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKFNVUkdFUllfWU4gIT0gIlVrbiIpICU+JSAKICBkcm9wbGV2ZWxzKCkgJT4lIAogIG11dGF0ZShTVVJHRVJZX1lOID0gYXMubG9naWNhbChTVVJHRVJZX1lOKSkKCmZpdF9zdXJnIDwtIGdsbShTVVJHX1RGIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBub19Va25zKQoKc3VtbWFyeShmaXRfc3VyZykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9zdXJnKSwgY29uZmludC5kZWZhdWx0KGZpdF9zdXJnLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBDaGVtbwpgYGB7cn0Kbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihDSEVNT19ZTiAhPSAiVWtuIikgJT4lIAogIGRyb3BsZXZlbHMoKSAlPiUgCiAgbXV0YXRlKENIRU1PX1lOID0gZmN0X3JlY29kZShDSEVNT19ZTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIiA9ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIgPSAiWWVzIikpICU+JSAKICBtdXRhdGUoQ0hFTU9fWU4gPSBhcy5pbnRlZ2VyKENIRU1PX1lOKSkgJT4lIAogIG11dGF0ZShDSEVNT19ZTiA9IENIRU1PX1lOIC0gMSkKCmZpdF9jaGVtbyA8LSBnbG0oQ0hFTU9fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgpzdW1tYXJ5KGZpdF9jaGVtbykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9jaGVtbyksIGNvbmZpbnQuZGVmYXVsdChmaXRfY2hlbW8sIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIFJhZGlhdGlvbgpgYGB7cn0Kbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihSQURJQVRJT05fWU4gIT0gIlVrbiIpICU+JQogIGRyb3BsZXZlbHMoKSAlPiUKICBtdXRhdGUoUkFESUFUSU9OX1lOID0gZmN0X3JlY29kZShSQURJQVRJT05fWU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgPSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiID0gIlllcyIpKSU+JSAKICBtdXRhdGUoUkFESUFUSU9OX1lOID0gYXMuaW50ZWdlcihSQURJQVRJT05fWU4pKSAlPiUgCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IFJBRElBVElPTl9ZTiAtIDEpCgoKZml0X3JhZHMgPC0gZ2xtKFJBRElBVElPTl9ZTiB+IEFHRV9GICsgUFJJTUFSWV9TSVRFICsgR1JBREVfRiArIFNFWF9GICsgUkFDRV9GICsgSU5TVVJBTkNFX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCArIFlFQVJfT0ZfRElBR05PU0lTLAogICBkYXRhID0gbm9fVWtucykKCgpzdW1tYXJ5KGZpdF9yYWRzKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X3JhZHMpLCBjb25maW50LmRlZmF1bHQoZml0X3JhZHMsIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIEltbXVub3RoZXJhcHkKYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoSU1NVU5PX1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkgJT4lCiAgbXV0YXRlKElNTVVOT19ZTiA9IGZjdF9yZWNvZGUoSU1NVU5PX1lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAiID0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIiA9ICJZZXMiKSklPiUgCiAgbXV0YXRlKElNTVVOT19ZTiA9IGFzLmludGVnZXIoSU1NVU5PX1lOKSkgJT4lIAogIG11dGF0ZShJTU1VTk9fWU4gPSBJTU1VTk9fWU4gLSAxKQoKCmZpdF9pbW11bm8gPC0gZ2xtKElNTVVOT19ZTiB+IEFHRV9GICsgUFJJTUFSWV9TSVRFICsgR1JBREVfRiArIFNFWF9GICsgUkFDRV9GICsgSU5TVVJBTkNFX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCArIFlFQVJfT0ZfRElBR05PU0lTLAogICBkYXRhID0gbm9fVWtucykKCgpzdW1tYXJ5KGZpdF9pbW11bm8pCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfaW1tdW5vKSwgY29uZmludC5kZWZhdWx0KGZpdF9pbW11bm8sIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIEFueSBUcmVhdG1lbnQKYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoVHhfWU4gIT0gIlVrbiIpICU+JQogIGRyb3BsZXZlbHMoKQoKCmZpdF90eCA8LSBnbG0oVHhfWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfdHgpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfcmFkcyksIGNvbmZpbnQuZGVmYXVsdChmaXRfdHgsIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIE1ldGFzdGFzaXMgYXQgVGltZSBvZiBEaWFnbm9zaXMKYGBge3J9CgpmaXRfbWV0cyA8LSBnbG0obWV0c19hdF9keF9GIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShmaXRfbWV0cykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9tZXRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9tZXRzLCBsZXZlbCA9IDAuOTUpKSkKYGBg